NodeJS 我想使用new Array创建2维数组并填充javascript,但结果不像数组

k5ifujac  于 2023-02-15  发布在  Node.js
关注(0)|答案(1)|浏览(164)

我试着用这段代码创建一个二维数组

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运行代码

ezykj2lf

ezykj2lf1#

看到所有的值都发生了变化,这说明Array.fill()创建了对对象的引用。这是一个浅副本。要得到你想要的行为,你需要在外层数组的每个槽中创建一个新数组。你可以使用一个循环,或者像map这样的帮助方法。

const fieldBloom = Array(this.height).fill(null).map(_ => Array(this.width).fill('*'))

相关问题