首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何实现动态Javascript地图合并?

如何实现动态Javascript地图合并?
EN

Stack Overflow用户
提问于 2018-08-28 06:33:55
回答 2查看 0关注 0票数 0

以下是我使用的代码:

代码语言:txt
复制
let map1=map2=map3=new Map();
map1.set(0, 'foo');
map1.set(1, 'foo');
map1.set(2, 'foo');
map1.set(3, 'foo');

//var map2 = new Map();
map2.set(1, 'foo2');
map2.set(2, 'foo2');

//var map3 = new Map();
map3.set(3, 'foo3');
let merge = new Map([...map1, ...map2, ...map3]);
代码语言:txt
复制
//returns a map of maps data  Map(key: time, value: Map(key:id, value: Object))
let dataStore = getData(); 
let mapStore = [];
let merge;

for(i=value; i>=0; i--){
  if(dataStore.has(i)){
      //push map into the mapstore array
      mapStore.push(dataStore.get(i))
      //key object in map to notate that a full update should be performed. 
      if(dataStore.get(i).has(updateFlag)){
          //merge mapStore maps into new map
          merge = new Map(mapStore); //results in map with undefined key and value              
          break;
      }      
  }
}
EN

回答 2

Stack Overflow用户

发布于 2018-08-28 15:03:07

显然需要一些规则来处理map 1和map 2中存在相同密钥的情况,这意味着替换,还是只包括以前不存在的替换:

代码语言:txt
复制
let mapStore=new Map();
let map1=new Map();
map1.set(0, 'foo');
map1.set(1, 'foo');
map1.set(2, 'foo');
map1.set(3, 'foo');

let map2 = new Map();
map2.set(1, 'foo2');
map2.set(2, 'foo2');

let map3 = new Map();
map3.set(3, 'foo3');

map1.forEach(function(value, key)){
  if !mapStore.has(key){
     mapStore.set(key, value);
  }
}
map2.forEach(function(value, key)){
  if !mapStore.has(key){
     mapStore.set(key, value);
  }
}
map3.forEach(function(value, key)){
  if !mapStore.has(key){
     mapStore.set(key, value);
  }
}
票数 0
EN

Stack Overflow用户

发布于 2018-08-28 15:57:00

使用以下方法合并这些地图:

代码语言:txt
复制
let merge = new Map([arrayOfMaps])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档