我正在尝试将这两张地图合并为一张地图。我试图使用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'}]};
答案 0 :(得分:2)
只需使用动态方法将所有项目放在一个数组中即可。
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);
答案 1 :(得分:1)
const result = {
Sdata: [...new Set(Object.values(v1).concat(Object.values(v2)))]
};
Set仅用于从数组中删除重复项。
答案 2 :(得分:1)
var v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
var v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};
var res = {Sdata: v1['Sdata'].concat(v2['Sdata'])};
console.log(res)
答案 3 :(得分:0)
您可以尝试以下方法:
let v1 = {Sdata: [{id: '1', name: 'Mark'},{id: '3', name: 'venu'}]};
let v2 = {Sdata: [{id: '2', name: 'Julee'},{id: '4', name: 'gopi'}]};
let entries = Object.entries(v1).concat(Object.entries(v2));
let result = entries.reduce((acc, currentValue) => {
if(!acc.hasOwnProperty(currentValue[0])){
acc[currentValue[0]] = [];
}
acc[currentValue[0]].push(...currentValue[1]);
return acc;
}, {});
答案 4 :(得分:0)
尝试
{ Sdata: [...v1.Sdata, ...v2.Sdata] }
spread运算符的最好之处在于它易于获得所需结果而无需更改实际数据。