多维数组引用问题

时间:2013-07-19 03:50:33

标签: javascript arrays reference

所以目前我在这里有一个数组,我想对最后一项进行一些修改并将其推回去。这里我有这个代码:(示例简化)

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);

这是结果

enter image description here

如您所见,第1和第2项都将其第一项更改为10。我怎么解决这个问题?我已经克隆了数组。

2 个答案:

答案 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);