内容
以下の2つの配列からオブジェクトの同じidがある場合、profileというオブジェクトを追加して新たな配列を生成したいです。できればarrays1の各オブジェクトの順番は変えないで対応したいです。
js
1const arrays1 = [{id:1, name:'a'}, {id:2, name:'b'}, {id:3, name:'c'}, {id:4, name:'d'}]; 2const arrays2 = [{id:3, age: 23}, {id:1, age: 31}];
出力したい内容
[ {id: 1, name: 'a', profile: { age: 31 } }, {id: 2, name: 'b'}, {id: 3, name: 'c', profile: { age: 23 } }, {id: 4, name: 'd'} ]
試したこと
以下のようにmapで試しましたが、当然ながらidの値が重複したオブジェクトが生成されます。これを一意且つ、profileというkeyがある場合はそのオブジェクトを優先して出力したいです。
js
1const resluts = arrays1.flatMap((array1) => { 2 return arrays2.map((array2) => { 3 if (array1.id !== array2.id) return array1; 4 5 return { 6 ...array1, 7 profile: { 8 age: array2.age, 9 }, 10 }; 11 12 }); 13});
[ { id: 1, name: 'a' }, { id: 1, name: 'a', profile: { age: 31 } }, { id: 2, name: 'b' }, { id: 2, name: 'b' }, { id: 3, name: 'c', profile: { age: 23 } }, { id: 3, name: 'c' }, { id: 4, name: 'd' }, { id: 4, name: 'd' } ]
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/25 11:55
2021/05/25 12:00