【发布时间】:2018-03-20 09:14:47
【问题描述】:
我正在使用这个创建一个数组映射:
var m = new Map(Array(40).fill(new Array()).entries());
现在,我想在这些数组中推送值。但是当我这样做时:
m.get(1).push(10)
值 10 被推入所有数组,而不是第一个位置。
【问题讨论】:
标签: javascript
我正在使用这个创建一个数组映射:
var m = new Map(Array(40).fill(new Array()).entries());
现在,我想在这些数组中推送值。但是当我这样做时:
m.get(1).push(10)
值 10 被推入所有数组,而不是第一个位置。
【问题讨论】:
标签: javascript
fill 得到single array 并使用它来填充给定数组的所有行,它不会为每一行创建一个新数组。这意味着您的单个数组引用在所有行之间共享。因为array是一个引用类型,所以你使用单引用来操作它,所以实际对象发生了变化。您可以通过比较每一行的引用来检查这一点。
const arr = new Array(2).fill(new Array());
console.log(arr[0] === arr[1]);
关于创建单独的数组,可以看上面@Nina的回答
【讨论】:
您可以采用另一种模式来构建独立数组。
var m = new Map(Array.from({ length: 40 }, _=> []).entries());
m.get(1).push(10);
console.log([...m]);
【讨论】: