1. ホーム
  2. javascript

[解決済み] 配列内のオブジェクトを置換する

2022-09-23 12:11:40

質問

このようなjavascriptオブジェクトがあります。

var arr1 = [{id:'124',name:'qqq'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'eee'},
           {id:'567',name:'rrr'}]

var arr2 = [{id:'124',name:'ttt'}, 
           {id:'45',name:'yyy'}]

のオブジェクトを置き換える必要があります。 arr1 の項目で置き換える必要があります。 arr2 と同じ id .

というわけで、得たい結果はこんな感じです。

var arr1 = [{id:'124',name:'ttt'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'yyy'},
           {id:'567',name:'rrr'}]

javascriptを使用して実装するにはどうすればよいですか?

どのように解決するのですか?

あなたは Array#map と共に Array#find .

arr1.map(obj => arr2.find(o => o.id === obj.id) || obj);

var arr1 = [{
    id: '124',
    name: 'qqq'
}, {
    id: '589',
    name: 'www'
}, {
    id: '45',
    name: 'eee'
}, {
    id: '567',
    name: 'rrr'
}];

var arr2 = [{
    id: '124',
    name: 'ttt'
}, {
    id: '45',
    name: 'yyy'
}];

var res = arr1.map(obj => arr2.find(o => o.id === obj.id) || obj);

console.log(res);

ここで arr2.find(o => o.id === obj.id) はその要素、つまり arr2id . もしそうでなければ、同じ要素を持つ arr2 すなわち arr1 が返されます。