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

zah*_*bba 0 javascript arrays multidimensional-array

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

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)
Run Code Online (Sandbox Code Playgroud)

控制台输出:

[ [ , , ,  ], [ , , ,  ], [ , , ,  ], [ , , ,  ] ]
multiArray: [ [ , 1, ,  ], [ , 1, ,  ], [ , 1, ,  ], [ , 1, ,  ] ]
Run Code Online (Sandbox Code Playgroud)

我原以为第二行输出是:

multiArray: [ [ , , ,  ], [ , , ,  ], [ , , ,  ], [ , 1, ,  ] ]
Run Code Online (Sandbox Code Playgroud)

为什么要将它1添加到每个数组的index = 1元素中?

mar*_*308 6

fill()方法使用静态值将数组的所有元素从起始索引填充到结束索引.

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