在特定位置的数组映射中推送值[重复]

Posted

技术标签:

【中文标题】在特定位置的数组映射中推送值[重复]【英文标题】:push value in map of arrays at a specific postition [duplicate] 【发布时间】:2018-03-20 09:14:47 【问题描述】:

我正在使用这个创建一个数组映射:

var m = new Map(Array(40).fill(new Array()).entries());

现在,我想在这些数组中推送值。但是当我这样做时:

m.get(1).push(10)

值 10 被推入所有数组,而不是第一个位置。

【问题讨论】:

【参考方案1】:

fill 得到single array 并使用它来填充给定数组的所有行,它不会为每一行创建一个新数组。这意味着您的单个数组引用在所有行之间共享。因为array是一个引用类型,所以你使用单引用来操作它,所以实际对象发生了变化。您可以通过比较每一行的引用来检查这一点。

const arr = new Array(2).fill(new Array());

console.log(arr[0] === arr[1]);

关于创建单独的数组,可以看上面@Nina的回答

【讨论】:

你只是在确认 OP 发现了什么...... 需要每个答案才能完整回答问题,各个方面??? 不能将某个部分引用到另一个部分吗? 这不能回答问题。您没有解释如何仅在“地图”的一个位置正确设置值。 另见上述评论【参考方案2】:

您可以采用另一种模式来构建独立数组。

var m = new Map(Array.from( length: 40 , _=> []).entries());
m.get(1).push(10);

console.log([...m]);

【讨论】:

以上是关于在特定位置的数组映射中推送值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

13.2 具体的集合

从Python列表中的特定位置删除项目[重复]

java中 List 与Set 有啥区别?

在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]

为什么将值分配给数组中的特定位置,将同一值分配给同一数组中的其他随机位置?

内存位置作为放大动态数组中的最后一个值[重复]