浅拷贝是copy的地址,一改全改
丛继永
var arr1 = [1,2,3];
var arr2 = arr1; //arr1的地址会赋值给arr2,一改全改
深拷贝是copy的值,不影响原来的值
slice(start,end) 方法以新的数组对象,返回数组中被选中的元素。不会改变原始数组。包括开始,不包括结束
const clone1 = (arr) => arr.slice(0);
…reset参数的逆运算[展开],复制,合并,伪数组转数组
const clone2 = (arr) => [...arr];
Array.from 把伪数组或可遍历的对象转换成真正的数组
const clone3 = (arr) => Array.from(arr);
.map数组遍历方法,对数组进行循环,返回值会组成一个新的数组
const clone4 = (arr) => arr.map((x) => x);
JSON.parse(text[, reviver]) 将数据转换为 JavaScript对象
JSON.stringify(value[, replacer[, space]]) 将JavaScript对象转换为字符串
const clone5 = (arr) => JSON.parse(JSON.stringify(arr));
.concat 将多个数组合成一个数组返回
const clone6 = (arr) => arr.concat([]);
.filter 对数组元素进行判断满足条件的会组成一个新的数组
const clone7 = (arr) =>arr.filter((x)=>x)
开始调用
let arr1 = [1, 2, 3]
let arrCopy = []
arrCopy = clone7(arr1)
arr1 = [4,5,6]
console.log(arrCopy)
总体来说只要是有返回值的都可以,在来个原始的for循环
var arr1 = [1,2,3];
var arrCopy = [];
for(var i = 0;i<arr1.length;i++){
arrCopy[i] = arr1[i]
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/4849.html