配列と、配列の要素とは異なるプロパティを持つオブジェクトがありますが、それらは共通の識別子によってリンクされています。配列の構造は次のとおりです。
[{
userId: '12',
prop1: 'blue',
prop2: 'yellow'
},
{
userId: '13',
prop1: 'black',
prop2: 'white'
}]
私のオブジェクトの構造は次のとおりです。
{id: '13',
prop3: 'heavy',
prop4: 'light'}
指定されたIDでオブジェクトを配列に追加したいので、最後に配列は次のようになります。
[{
userId: '12',
prop1: 'blue',
prop2: 'yellow'
},
{
userId: '13',
prop1: 'black',
prop2: 'white',
prop3: 'heavy',
prop4: 'light'
}]
IDの識別子が同じではないため、それらをマージするのに苦労しています。次のコードを使用してlodashを介してマージしようとしましたが、うまくいきませんでした。ありがとうございました!
let merged = _(myArray)
.concat(myObject)
.groupBy('id')
.map(_.spread(_.merge))
.value();
マージする前に、オブジェクトの「id」プロパティを「userId」に変更します。
const mergeToArr = (arr, { id: userId, ...rest }) => _(arr)
.concat({ userId, ...rest })
.groupBy('userId')
.map(_.spread(_.merge))
.value();
const arr = [{"userId":"12","prop1":"blue","prop2":"yellow"},{"userId":"13","prop1":"black","prop2":"white"}];1
const obj = {"id":"13","prop3":"heavy","prop4":"light"};
const result = mergeToArr(arr, obj);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加