一般如果数组是常用类型,可以使用slice()方法和concat()进行拷贝,
例如:
let arr = originArr.slice(0);
let arr = originArr.concat();
但是如果数组的元素是对象的话,上面的方法就失败了,所以,需要自己写一个深拷贝函数:
// 数组深拷贝函数
function deepCopyArray (arr) {
if (!Array.isArray(arr) || arr.length <= 0) {
throw "the param of deepCopyArray must be a arry and not null";
return ;
}
let _arr = [],
obj = null;
for(let i = 0, len = arr.length; i < len; i++) {
if (typeof arr[i] === 'object') {
obj = Object.assign({}, arr[i]);
} else {
obj = arr[i];
}
_arr[i] = obj;
obj = null;
}
return _arr;
}