javascript - 数组数组插入所有行

标签 javascript

我在下面有一段简单的代码,但似乎数组的同一实例在每一行中都是重复的,这样当我更改 board[0][0] 中的值时,它会以某种方式在所有行中更改它。

如何正确初始化电路板以使每一行都是唯一的? 寻找一个圆滑的解决方案或对我的进行一些调整,而不是写出所有数字或使用 for 循环或其他东西。或者也许最圆滑的解决方案是使用 for 循环?

const n = 4;

let board = new Array(n).fill(new Array(n).fill(0));

board[0][0] = 1;
console.log(board)

输出:

[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]] 

最佳答案

new Array(n).fill(0) 创建一次,然后传递给 .fill 方法,所以实际上,您得到了 n 结果数组中相同数组的副本(准确地说是引用)。您可以添加 map 函数来创建 n 个新数组,如下所示:

new Array(n).fill(0).map(x => new Array(n).fill(0));

这样,map 每次都会创建一个新的数组,所以你会得到 n 个不同的数组,其中填充了 0

演示片段:

const n = 4;

let board = new Array(n).fill(0).map(x => new Array(n).fill(0));

board[0][0] = 1;
console.log(board)

关于javascript - 数组数组插入所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74827671/

相关文章:

javascript - 从 2 组点计算仿射变换

javascript - 将包含文件传递到 Handlebars 布局中

javascript - 如何将单个 SQL OR 运算符应用于 Sequelize 中的表及其关联表?

javascript - 不可见的 reCaptcha : can't make a working AJAX call, 得到无限循环

javascript - 设置 ContentPane 内容时如何保留旧内容

javascript - IE9 在文件输入选择框中无法看到 "files"

javascript - 如何使用 jquery 替换变量中的元素并在另一个变量中获取结果

javascript - 在 onclick 和 onkeypress 事件上调用 javascript 方法

javascript - 如果另一个元素不存在或隐藏,则 AngularJS NgIf 或 NgHide

使用事件处理程序生成 DOM 元素的 Javascript 外部函数不输出 html