在Chrome控制台中创建一个新的多维数组,如下所示: var array = Array(10).fill(Array(10).fill(false)); 数组看起来符合预期(使用console.table进行检查): 但是,当尝试仅更改数组中的一个单元格:array[5][5] = true;时,会发生奇怪的事情: 我已经因为这个问题苦恼了一段时间,但无法解决。这可能是由于Array.fill是一个实验性/新功能导致的错误吗?
这是因为您实际上只创建了两个数组。您创建了一个具有10个元素的内部数组,然后创建了一个具有10个元素的外部数组,每个元素都引用相同的内部数组。当您更改内部数组的元素,然后查看外部数组时,您会看到相同的更改在内部数组中重复10次。 请改用循环创建外部数组,以便为外部循环的每个元素创建一个新的内部数组。