- slice()方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。
这个方法会返回一个新数组,出来的结果当然和原来的数组不同。所以,
c === a
- 所谓浅复制,是指这样的情况:
Array.clone = function(arr) {
const ans = [];
for(let i = 0; i < arr.length; i++) {
ans[i] = arr[i];
}
return(ans);
}
let a = [1,2,3,[4,5,6],[7,8,9]],
b = Array.clone(a);
console.log(a === b);
console.log(a[3]);
console.log(a[3] === b[3]);
console.log(a[4] === b[4]);
- 所谓深复制是这样的:
Array.clone = function(arr) {
const ans = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i].length) {
ans[i] = Array.clone(arr[i]);
} else {
ans[i] = arr[i];
}
}
return(ans);
}
let a = [1,2,3,[4,5,6],[7,8,9]],
b = Array.clone(a);
console.log(a === b);
console.log(a[3]);
console.log(a[3] === b[3]);
console.log(a[4] === b[4]);