如何在javascript中重置2D数组中的值

如何在javascript中重置2D数组中的值,javascript,arrays,Javascript,Arrays,我真的很困惑这个2D阵列 例如: let arr = Array(2) arr.fill(Array(2)) arr[0][0]=1 arr的结果是[1,空][1,空] 为什么会这样? 我只想将第一个数组中的第一项设置为1,因为您使用数组的一个实例来填充第一个数组arr。因此arr[0]和arr[1]实际上是同一个实例,它们指向相同的地址。 如果要用新数组填充数组arr,请在第一个数组arr上循环,然后为它们分配新数组 const arr = Array(2); for (let i =

我真的很困惑这个2D阵列

例如:

let arr = Array(2)
arr.fill(Array(2))

arr[0][0]=1
arr的结果是[1,空][1,空]

为什么会这样?
我只想将第一个数组中的第一项设置为1,因为您使用数组的一个实例来填充第一个数组arr。因此arr[0]和arr[1]实际上是同一个实例,它们指向相同的地址。 如果要用新数组填充数组arr,请在第一个数组arr上循环,然后为它们分配新数组

const arr = Array(2);

for (let i = 0; i < arr.length; i++) {
    arr[i] = Array(2);
}

arr[0][0] = 1;

因为使用数组的1个实例来填充第一个数组arr。所以arr[0]和arr[1]实际上是同一个实例,它们指向相同的地址。 如果要用新数组填充数组arr,请在第一个数组arr上循环,然后为它们分配新数组

const arr = Array(2);

for (let i = 0; i < arr.length; i++) {
    arr[i] = Array(2);
}

arr[0][0] = 1;
Array2是复制到arr的每个元素的空数组

但是Array2的所有副本都是深度副本

因此,其中一个深度副本中的更改将反映在Array2的所有副本中

设arr=Array2 阿里菲拉雷2 arr[0][0]=1 // [ [ 1, ], [ 1, ] ] arr[0][1]=2 //[[1,2],[1,2]Array2是复制到arr的每个元素的空数组

但是Array2的所有副本都是深度副本

因此,其中一个深度副本中的更改将反映在Array2的所有副本中

设arr=Array2 阿里菲拉雷2 arr[0][0]=1 // [ [ 1, ], [ 1, ] ] arr[0][1]=2 //[1,2],[1,2]文件上说

值来填充数组。注意:数组中的所有元素都将是这个精确值

这意味着它们在内存中共享相同的地址

您需要一种不同的方法来填充阵列

设arr=Array.from{length:2},e=>Array2 arr[0][0]=1 console.logarr 文件说

值来填充数组。注意:数组中的所有元素都将是这个精确值

这意味着它们在内存中共享相同的地址

您需要一种不同的方法来填充阵列

设arr=Array.from{length:2},e=>Array2 arr[0][0]=1 console.logarr;问题在于arr.fill了解更多关于fill方法的信息问题在于arr.fill了解更多关于fill方法的信息