所以目前我在这里有一个数组,我想对最后一项进行一些修改并将其推回去。这里我有这个代码:(示例简化)
var array = [
[ [0,1,2], [3,4,5] ]
];
//other stuff...
var add = array[0].slice(); //to clone the array (but not working as expected)
add[0][0] = 10;
array.push(add);
console.log(array);
这是结果
如您所见,第1和第2项都将其第一项更改为10
。我怎么解决这个问题?我已经克隆了数组。
答案 0 :(得分:5)
Array.prototype.slice()
执行浅拷贝,因此不会复制嵌套数组。您应该使用像this这样的深层克隆方法。
答案 1 :(得分:1)
Array.prototype.slice()不克隆嵌套数组。你可以针对你的问题做这样的事情
var array = [
[ [0,1,2], [3,4,5] ]
];
//other stuff...
var add = array[0].slice(); //to clone the array (but not working as expected)
add[0] = array[0][0].slice();
add[0][0] = 10;
array.push(add);
console.log(array);