哪个依赖两个数组?如果第二个数组已从第一个数组创建

时间:2018-03-10 12:05:28

标签: javascript arrays assign pop

我列出了两个Array,一个是条目,第二个是空的。 确定一个单元格,第一个数组[0]到第二个数组。并使用applye方法pop()为第二个Array。为什么是单元格,第一个数组也改变了它的值。



var t = [[1,1,1], [1,1,1,1,1], [1,1,1,1]];
var t1 = t[0];
t1.pop();
console.log(t[0]);




结果1.1 它为什么会发生? 感谢。

2 个答案:

答案 0 :(得分:1)

pop()

  

pop()方法从数组中删除最后一个元素并返回该元素。此方法更改数组的长度。



var t = [[1,1,1], [1,1,1,1,1], [1,1,1,1]];
var t1 = t[0];
t1.pop(); // this is modifying the array in t[0]
console.log(t[0]);




为避免这种情况,您可以在执行函数pop()

之前创建副本



var t = [[1,1,1], [1,1,1,1,1], [1,1,1,1]];
var t1 = t[0].slice(); // Creating a copy of array in t[0]
t1.pop();
console.log(t[0]);




答案 1 :(得分:0)

我想阐明这个问题的另一个方面。

数组是JavaScript中的引用类型。这意味着指针用于在javascript中的内存中定位数组。所以当你分配

var t1 = t[0];

您要将same memory address指向的t[0]分配给t1。因此,t[0]t1基本上指向{{1} }。这就是为什么从memory弹出值时,它也会影响t1指向的同一数组。这就是t[0]值也会改变的原因。