为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2023-06-15 10:01:37
我真的很困惑这个二维数组。例如:let arr = Array(2) arr.fill(Array(2)) arr[0][0]=1结果arr是[1,empty][1,empty]为什么会这样?我只想将第一个数组中的第一项设置为 1
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

因为您使用数组的 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;


查看完整回答
反对 回复 2023-06-15
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

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 ] ]


查看完整回答
反对 回复 2023-06-15
?
慕容森

TA贡献1853条经验 获得超18个赞

文档说...


用于填充数组的值。(注意数组中的所有元素都将是这个精确值。)


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


你需要一种不同的方法来填充你的数组..


let arr = Array.from({length: 2}, e => Array(2))


arr[0][0]=1


console.log(arr);


查看完整回答
反对 回复 2023-06-15
  • 3 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信