因为项目需要,我用push给一个数组添加4x1的数组作为元素,最终得到2x4x1的三维数组data,当我使用data[0][0].push('1');给data[0][0]添加元素时发现data[1][0]中也多出了同样的元素,分析发现是因为在生成三维数组时我使用的是data.push[unit],其中unit=[ [ ],[ ],[ ],[ ] ],看似给data添加了两个4x1的数组,实际上这两个数组都指向同一个变量,因此修改data[0][0]时data[1][0]也会发生变化,代码如下:
<script type="text/javascript">
var data=[[[],[],[],[]],[[],[],[],[]]];
console.log(JSON.parse(JSON.stringify(data)));
data[0][0].push('1');
console.log(data);
data=[];
data.push(unit);
data.push(unit);
console.log(JSON.parse(JSON.stringify(data)));
data[0][0].push('1');
console.log(JSON.parse(JSON.stringify(data)));
</script>
当直接为data赋值成2x4x1的数组或者使用data.push([[],[],[],[]]);添加元素时,data[0][0]与data[1][0]的变化不同步,若使用data.push(unit);添加元素则两者变化同步