我试着用这段代码创建一个二维数组
const fieldBloom = new Array(this.height).fill(new Array(this.width).fill("✼"));
但当我尝试使用fieldBloom[0][0] =“A”对其进行变异时,它会更改二维数组中的所有第一个元素
[
[ 'A', '✼', '✼', '✼', '✼', '✼' ],
[ 'A', '✼', '✼', '✼', '✼', '✼' ],
[ 'A', '✼', '✼', '✼', '✼', '✼' ],
[ 'A', '✼', '✼', '✼', '✼', '✼' ],
[ 'A', '✼', '✼', '✼', '✼', '✼' ]
]
这是怎么回事?我可以做些什么改变,使它的行为像一个数组(只改变值为“A”在索引[0][0])
我使用node.js v18.12.1运行代码
1条答案
按热度按时间ezykj2lf1#
看到所有的值都发生了变化,这说明Array.fill()创建了对对象的引用。这是一个浅副本。要得到你想要的行为,你需要在外层数组的每个槽中创建一个新数组。你可以使用一个循环,或者像map这样的帮助方法。