为什么这个值在我的二维数组中的每个数组上更新?
Why is this value updating on each array inside my 2d array?
我有一个二维数组:
let arr = [ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
当我尝试更新第二个位置的第一个子数组时:
arr[0][1] = 4
输出为:
[ [ 0, 4, 0, 0 ], [ 0, 4, 0, 0 ], [ 0, 4, 0, 0 ], [ 0, 4, 0, 0 ] ]
为什么所有的子阵列都在更新?
完整代码为:
let arr = [ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
arr[0][1] = 4
console.log(arr)
您很可能错误地创建了数组。您的二维数组的元素引用了同一数组 4 次。
这是一个例子:
const array2d = new Array(4).fill([0,0,0,0]);
console.log(JSON.stringify(array2d));
array2d[1][1] = 1;
console.log(JSON.stringify(array2d));
虽然数组的长度为 4,但它的每个成员都被替换为相同的数组。
另一方面,映射它会给出不同的结果:
const array2d = Array.from({length: 4}, () => [0,0,0,0])
console.log(JSON.stringify(array2d));
array2d[1][1] = 1;
console.log(JSON.stringify(array2d));
我有一个二维数组:
let arr = [ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
当我尝试更新第二个位置的第一个子数组时:
arr[0][1] = 4
输出为:
[ [ 0, 4, 0, 0 ], [ 0, 4, 0, 0 ], [ 0, 4, 0, 0 ], [ 0, 4, 0, 0 ] ]
为什么所有的子阵列都在更新?
完整代码为:
let arr = [ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
arr[0][1] = 4
console.log(arr)
您很可能错误地创建了数组。您的二维数组的元素引用了同一数组 4 次。
这是一个例子:
const array2d = new Array(4).fill([0,0,0,0]);
console.log(JSON.stringify(array2d));
array2d[1][1] = 1;
console.log(JSON.stringify(array2d));
虽然数组的长度为 4,但它的每个成员都被替换为相同的数组。 另一方面,映射它会给出不同的结果:
const array2d = Array.from({length: 4}, () => [0,0,0,0])
console.log(JSON.stringify(array2d));
array2d[1][1] = 1;
console.log(JSON.stringify(array2d));