在Chrome控制台中创建一个新的多维数组时,如下所示:
var array = Array(10).fill(Array(10).fill(false));
但是当尝试只更改数组中的一个单元格时:array[5][5] = true;
发生了一些奇怪的事情:
由于这个原因,我一直在靠墙撞墙,但无法理解。这可能是一个错误,因为Array.fill是一个实验/新功能吗?
答案 0 :(得分:2)
这是因为你实际上只创建了两个数组。您创建了一个包含10个元素的内部数组,然后创建了一个包含10个元素的外部数组,每个元素都引用相同的内部数组。当您更改内部数组的元素然后查看外部数组时,您将看到内部数组中的相同更改重复10次。
使用循环创建外部数组,以便为外部循环的每个元素创建一个新的内部数组。