首页 > 解决方案 > 使用 2D javascript 数组中每个元素的随机值初始化新对象?

问题描述

我正在尝试执行此基本迭代和对象初始化,但似乎每一行都是使用包含相同 ID 的对象创建的。我疯了吗?

function makeGrid (cols, rows) {
  const grid = new Array(cols).fill(new Array(rows))
  for (let i = 0; i < cols; i++) {
    for (let j = 0; j < rows; j++) {
      grid[i][j] = {id: random()}
    }
  }
  return grid
}

这是结果: 在此处输入图像描述

标签: javascript

解决方案


感谢@Scott Hunter 和@ASDFGerte(在评论中):问题是new Array(cols).fill(new Array(rows)). 这是用对另一个新数组的引用填充新启动的数组new Array(rows)。我想做的是为数组中的每个元素创建新cols数组。这解决了这个问题:

[...new Array(cols)].map(() => new Array(rows))

推荐阅读