プロが教える店舗&オフィスのセキュリティ対策術

2つの配列をキーでマージする方法を教えてください。
例えば、以下のprofeelを主として、personIdで一致するkekkaの情報とマージして
mergeListを作成する方法を教えてください。

var profeel = [
{personId:'1001',nama:'Aさん'},
{personId:'1002',nama:'Bさん'},
{personId:'1004',nama:'Dさん'},
{personId:'1005',nama:'Eさん'}
]

var kekka = [
{personId:1001',scores:['98','100','80']},
{personId:1002',scores:['100','100','55']},
{personId:1003',scores:['35','98','78']},
{personId:1004',scores:['90','99','100']}
]

var mergeList = [
{personId:1001',name:'Aさん',scores:['98','100','80']},
{personId:1002',name:'Bさん',scores:['100','100','55']},
{personId:1004',name:'Dさん',scores:['90','99','100']},
{personId:1005',name:'Eさん'}
]

A 回答 (1件)

こんにちは



mergeListは新しいオブジェクトとして生成しています。
kekkaに同一キーが存在する場合は、そちらの値が採用されます。
同一キーではprofeelを優先したい場合は、profeelを後からコピーすればよいでしょう。

const kekkaP = kekka.map( e=> e.personId );
const mergeList = profeel.map( e=> {
const o = {};
for ( const k in e) o[k] = e[k];
const n = kekkaP.indexOf(e.personId);
if(n>-1) for ( const k in kekka[n]) o[k] = kekka[n][k];
return o;
});
    • good
    • 1
この回答へのお礼

ありがとうござます!!
やっとやっと解決できそうです。
短時間で回答をいただけて、大変、助かりました。

お礼日時:2021/02/23 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!