如果第二个数组是从第一个数组创建的,那么两个数组有哪些依赖关系?
Which dependence do two arrays have if second array was created from the first array?
我正在创建两个数组,第一个包含条目,第二个为空。
我正在分配一个单元格,第一个 array[0]
到第二个数组。我正在为第二个数组应用方法 pop()
。为什么单元格,第一个数组也改变了它的值?
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
]
为什么会这样?
pop()
The pop() method removes the last element from an array and returns that element. This method changes the length of the array.
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]);
我想阐明这个问题的另一个方面。
数组 是JavaScript 中的引用类型。这意味着指针用于在javascript中定位内存中的数组。所以当你分配
var t1 = t[0];
你正在将 t[0]
指向的 same memory address
分配给 t1
。所以,t[0]
和 t1
基本上指向 [=] 中的同一个数组16=]。这就是为什么当从 t1
中弹出值时,它会影响 t[0]
also.That 指向的相同数组,这就是为什么 t[0]
值也发生变化的原因。
我正在创建两个数组,第一个包含条目,第二个为空。
我正在分配一个单元格,第一个 array[0]
到第二个数组。我正在为第二个数组应用方法 pop()
。为什么单元格,第一个数组也改变了它的值?
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
]
为什么会这样?
pop()
The pop() method removes the last element from an array and returns that element. This method changes the length of the array.
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]);
我想阐明这个问题的另一个方面。
数组 是JavaScript 中的引用类型。这意味着指针用于在javascript中定位内存中的数组。所以当你分配
var t1 = t[0];
你正在将 t[0]
指向的 same memory address
分配给 t1
。所以,t[0]
和 t1
基本上指向 [=] 中的同一个数组16=]。这就是为什么当从 t1
中弹出值时,它会影响 t[0]
also.That 指向的相同数组,这就是为什么 t[0]
值也发生变化的原因。