如何在多维数组(JavaScript)中分配单个元素



我不知道为什么我会看到以下内容:

const sideLength = 4;
const multiArray = new Array(sideLength).fill(new Array(sideLength));
console.log(multiArray)
var counter = 1;
multiArray[3][1] = counter;
console.log('multiArray:', multiArray)

控制台输出:

[ [ , , ,  ], [ , , ,  ], [ , , ,  ], [ , , ,  ] ]
multiArray: [ [ , 1, ,  ], [ , 1, ,  ], [ , 1, ,  ], [ , 1, ,  ] ]

我本来可以预期的第二行输出为:

multiArray: [ [ , , ,  ], [ , , ,  ], [ , , ,  ], [ , 1, ,  ] ]

为什么将1添加到每个数组的索引= 1元素?

fill()方法从开始索引到具有静态值的端索引的数组的所有元素。

这意味着所有元素都将指代相同的数组。更改一个元素的值将改变所有元素的值,因为它们是指同一静态对象

您可以使用Array.from()创建具有特定.length

Array

const sideLength = 4;
const multiArray = Array.from({length:sideLength}, () => new Array(sideLength));
console.log(multiArray)
var counter = 1;
multiArray[3][1] = counter;
console.log('multiArray:', multiArray)

最新更新