【问题标题】: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 被推入所有数组,而不是第一个位置。

【问题讨论】:

    标签: javascript


    【解决方案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]);

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 1970-01-01
      • 2012-02-03
      • 2022-09-28
      • 2013-06-12
      • 1970-01-01
      • 2015-06-20
      • 2019-11-10
      • 1970-01-01
      相关资源
      最近更新 更多