如何在javascript中重置2D数组中的值
我真的很困惑这个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 =
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方法的信息