更改多维数组中的一个单元格会更新整个列

6

在Chrome控制台中创建一个新的多维数组,如下所示:

var array = Array(10).fill(Array(10).fill(false));

数组看起来符合预期(使用console.table进行检查): enter image description here 但是,当尝试仅更改数组中的一个单元格:array[5][5] = true;时,会发生奇怪的事情: enter image description here 我已经因为这个问题苦恼了一段时间,但无法解决。这可能是由于Array.fill是一个实验性/新功能导致的错误吗?

1个回答

6

这是因为您实际上只创建了两个数组。您创建了一个具有10个元素的内部数组,然后创建了一个具有10个元素的外部数组,每个元素都引用相同的内部数组。当您更改内部数组的元素,然后查看外部数组时,您会看到相同的更改在内部数组中重复10次。

请改用循环创建外部数组,以便为外部循环的每个元素创建一个新的内部数组。


2
好的,谢谢!最终我是这样创建数组的:Array(10).fill().map(_ => Array(10).fill(false)) - maxjvh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接