js数组拷贝

218 阅读1分钟
let arr = [1, 'a', true, null, undefined]
let result = arr.concat();
let result = arr.slice();
let result = Array.from(arr);
let result = [];
Array.prototype.push.apply(result, arr)
let result = arr.map((item) => {
    return item
})

以上几种方法都能实现数组的浅拷贝,即数组的每一项只能是原始类型的数据,如果数组的项包含引用类型,如数组(即js中的二维数组),对象等,以上方法复制的项只是引用。

JSON转换

let result = JSON.parse(JSON.stringify(arr));

可以实现深拷贝,有限制:

1.数组中的项如果是undefined,转换后变为 null

2.如果该项为对象,那么对象之间不可相互引用。会造成循环引用,无法JSON序列化