在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js數(shù)組合并問題。

js數(shù)組合并問題。

我想(優(yōu)雅的)合并兩個數(shù)組

let a = [{
    id: '1',
    name: 'test1',
    count: 2
},{
    id: '2',
    name: 'test2',
    count: 3
}]

let b = [{
    id: '1',
    name: 'test1',
    count: 1
},{
    id: '3',
    name: 'test3',
    count: 3
}]

// 結(jié)果為
[{
    id: '1',
    name: 'test1',
    count: 1
},{
    id: '2',
    name: 'test2',
    count: 3
},{
    id: '3',
    name: 'test3',
    count: 3
}]

根據(jù)id,b覆蓋a不同的屬性

回答
編輯回答
維他命

這種特殊需求沒有原生支持還要“優(yōu)雅”是不存在的,自己封裝好函數(shù)就足夠優(yōu)雅了。

function update(dst, src) {
    for(let key in src) dst[key] = src[key];
}

// Create index
let index = {};
a.forEach((v, k) => index[v.id] = k);

b.forEach(v => {
  if(v.id in index) update(a[index[v.id]], v);
  else a.push(v);
});

另外,講道理是“優(yōu)雅地”#(滑稽)。

2017年8月20日 10:16
編輯回答
風清揚
Array.from(new Map([...a, ...b].map(x => [x.id, x])).values())
2018年1月19日 11:55
編輯回答
深記你
a.forEach(item=>{
    if(!b.some(t=>t.id===item.id)){
        b.push(item);
    }
});
console.log(b);
2018年1月2日 20:30