我正在使用它创建一个数组映射:
var m = new Map(Array(40).fill(new Array()).entries());
现在,我想推送那些数组中的值。但是当我这样做时:
m.get(1).push(10)
值10被推入所有数组而不是第一个位置的数组。
答案 0 :(得分:1)
fill
让single array
使用它来填充给定数组的所有行,它不会为每一行创建一个新数组。这意味着您的单个数组引用在所有行之间共享。因为array
是引用类型,所以使用单引用来操作它,因此实际对象会发生更改。您可以通过比较每行的引用来检查这一点。
const arr = new Array(2).fill(new Array());
console.log(arr[0] === arr[1]);

要创建单独的数组,您可以看到 @ Nina的回答
答案 1 :(得分:1)
你可以采用另一种模式来构建独立的数组。
var m = new Map(Array.from({ length: 40 }, _=> []).entries());
m.get(1).push(10);
console.log([...m]);