let arr = [[1,2,3], [4,5,6], [7,8,9]]
arr[0][1] = 'X'
arr[1][1] = 'O'
console.log(arr);
我试图制定一个初步的井字棋游戏,这个方法来创建表用于我的罚款。
在其他方法阅读了以产生一矩阵表阵列,我发现这个
let newArr = new Array(3).fill(new Array(3))
newArr[0][1] = 'X'
console.log(newArr)
正如我试图返回newArr它实际上与“X”替换整个列。
为什么这样做?我在想,也许在堆栈过程中,我意识到我正在命名一个未定义索引的值,并且对整列完全相同,但我无法确认。
并解释为什么'array.fill'预计1个参数,它会用这个元素填充数组。现在,通过引用来复制对象,因此当您将对象/数组传递给它时,您将使用相同的引用填充数组中的所有值。因此,更新1值会更新所有值。 – Rajesh
非常感谢你,这非常有意义。将Array.fill应用于相同的参考对象绝对不实用。 – jondub
替代方案可以是'Array.from({length:3},(x)=> new Array(3))',但这是一个ES6功能。将适用于您,但需要您自担风险 – Rajesh