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

时间:2015-12-06 14:37:26

标签: javascript google-chrome

在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 个答案:

答案 0 :(得分:2)

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

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