我在下面有一段简单的代码,但似乎数组的同一实例在每一行中都是重复的,这样当我更改 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/