Simplest way to merge ES6 Maps/Sets?

前端 未结 13 1213
广开言路
广开言路 2020-11-29 17:24

Is there a simple way to merge ES6 Maps together (like Object.assign)? And while we\'re at it, what about ES6 Sets (like Array.concat)?

13条回答
  •  醉梦人生
    2020-11-29 18:02

    Here's my solution using generators:

    For Maps:

    let map1 = new Map(), map2 = new Map();
    
    map1.set('a', 'foo');
    map1.set('b', 'bar');
    map2.set('b', 'baz');
    map2.set('c', 'bazz');
    
    let map3 = new Map(function*() { yield* map1; yield* map2; }());
    
    console.log(Array.from(map3)); // Result: [ [ 'a', 'foo' ], [ 'b', 'baz' ], [ 'c', 'bazz' ] ]
    

    For Sets:

    let set1 = new Set(['foo', 'bar']), set2 = new Set(['bar', 'baz']);
    
    let set3 = new Set(function*() { yield* set1; yield* set2; }());
    
    console.log(Array.from(set3)); // Result: [ 'foo', 'bar', 'baz' ]
    

提交回复
热议问题