数组值分配未按预期工作 Javascript

Array value assignment not working as expected Javascript

我现在正在处理的代码要求我为二维数组中的单个单元格赋值。 但是作业似乎没有按预期完成。

let b = new Array(3).fill(new Array(3).fill(0));
b[1][1] = 1;
console.log(b.toString());

我真的不明白为什么它会产生这个输出。

下面的代码给出了我期望的输出,但我真的更希望能够以类似于第一个片段的方式来完成它。

let b = []
for(let i = 0; i < 3; i++){
  b.push([])
  for(let j = 0; j < 3; j++){
    b[i].push(0)
  }  
}
b[1][1] = 1
console.log(b.toString())

在您的第一个示例中,它创建了一个数组,然后将每个元素填充到该数组中。这意味着一个人的改变将反映在其他一切事物上。如果你想为每个元素构造一个新数组,那么你可以尝试映射它:

let b = new Array(3).fill(null).map(_ => new Array(3).fill(0));
b[1][1] = 1;
console.log(b.toString());

您可以使用 Array.from()

的内置映射回调来避免分配相同的数组引用

let b = Array.from({length:3}, (_,i) => Array(3).fill(i));

console.log(b)