【问题标题】:How to increase all values of a map in javascript如何在javascript中增加地图的所有值
【发布时间】:2021-01-21 05:32:41
【问题描述】:

我有这张地图:

var map = new Map();

map.set("10/10", 0);
map.set("10/11", 1);
map.set("10/12", 2);

     
{
   "10/10": 0,
   "10/11": 1,
   "10/12": 2,
}

我想添加这个新的键/值:

"10/9": 0,

如何增加 1 中所有旧地图元素的值?所以我得到了以下地图:

{
   "10/9": 0,
   "10/10": 1,
   "10/11": 2,
   "10/12": 3,
}

【问题讨论】:

  • 你是如何使用这个Map对象的?
  • 我在这张地图中存储了一个列表的索引,以便快速索引。
  • 遍历map的key并一个一个设置?...
  • 你确实意识到你的例子是有缺陷的,对吧?地图维护插入顺序 - 因此“10/9”将是列表中的最后一个键,它不能是您给定场景中的第一个键。
  • [...map.keys()].forEach(k => map.set(k, map.get(k) +1)); 然后map.set("10/9", 0);

标签: javascript data-structures ecmascript-6 key-value


【解决方案1】:

你可以这样使用:

var map = new Map();

map.set("10/10", 0);
map.set("10/11", 1);
map.set("10/12", 2);

function addNewItem(item, map) {
  map.forEach((value, key, map) => {
    map.set(key, value + 1);
  });
  map.set(item, 0);
  return map;
}

const newMap = addNewItem("10/9", map);

console.log(newMap);

【讨论】:

    【解决方案2】:

    您可以根据项目的值将项目放置在此处的任何位置,并增加该值大于或等于分配的值。

    var map = new Map();
    
    map.set("10/10", 0);
    map.set("10/11", 1);
    map.set("10/12", 2);
    
    
    
    function logMapElements(value, key, map, set_key, set_value) {
        if (set_value <= value) {
          map.set(key, value+1);
        }
        
    }
    
    function setMapElement(set_key, set_value) {
            map.forEach((key, value, map) => logMapElements(key, value, map, set_key, set_value))
        map.set(set_key, set_value);
      
    
      
      
    }
    
    setMapElement("10/9", 0);
    console.log(map.get("10/9"));
    console.log(map.get("10/10"));

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 1970-01-01
      • 2013-10-08
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多