如何在javascript中重置二维数组中的值

我真的很困惑这个二维数组。

例如:

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

arr[0][0]=1

结果arr[1,empty][1,empty]

为什么会这样?我只想将第一个数组中的第一项设置为 1


潇潇雨雨
浏览 160回答 3
3回答

陪伴而非守候

因为您使用数组的 1 个实例来填充您的第一个数组 (arr)。所以arr[0]和arr[1]实际上是同一个实例,它们指向同一个地址。如果你想用新数组填充你的数组 arr,首先循环遍历你的数组 arr,然后为它们分配新数组。const arr = Array(2);for (let i = 0; i < arr.length; i++) {&nbsp; &nbsp; arr[i] = Array(2);}arr[0][0] = 1;

呼啦一阵风

Array(2)是复制到arr的每个元素的空数组。但是Array(2)的所有副本都是深层副本。因此,其中一个深拷贝的更改将反映在Array(2)的所有副本中。let arr = Array(2)arr.fill(Array(2))arr[0][0]= 1// [ [ 1, <1 empty item> ], [ 1, <1 empty item> ] ]arr[0][1] = 2// [ [ 1, 2 ], [ 1, 2 ] ]

慕容森

文档说...用于填充数组的值。(注意数组中的所有元素都将是这个精确值。)这意味着它们在内存中共享相同的地址。你需要一种不同的方法来填充你的数组..let arr = Array.from({length: 2}, e => Array(2))arr[0][0]=1console.log(arr);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript