我不知道为什么会看到以下内容:
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
添加到每个数组的index = 1元素中? 最佳答案
fill()方法使用静态值填充数组的所有元素(从开始索引到结束索引)。
这意味着所有元素都将引用同一数组。更改一个元素的值将更改所有元素的值,因为它们引用同一静态对象