首页 > 解决方案 > 如何将这两张地图合并为一张

问题描述

我正在尝试将这两个地图合并为一个。我尝试使用 concat 但这不起作用。并且还尝试了 var m = {...v1, ...v2}; 但这也行不通。所以任何知道的人请帮助我。

这是我的两张地图:

var v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
var v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};

在这里我除了输出如下如果键匹配它应该像这样合并

result: Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}, {id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};

标签: javascriptecmascript-6

解决方案


只需使用动态方法将所有项目放在一个数组中即可。

var v1 = { Sdata: [{ id: '1', name: 'Mark' }, { id: '3', name: 'venu' }] },
    v2 = { Sdata: [{ id: '2', name: 'Julee' }, { id: '4', name: 'gopi' }] },
    merged = [v1, v2].reduce((a, b) => {
        Object.entries(b).forEach(([k, v]) => {
            if (!a[k]) a[k] = [];
            a[k].push(...b[k]);
        });
        return a;
    }, {});

console.log(merged);


推荐阅读