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序列化