[英]Merge multiple objects into single object with making array of same property values
[英]Compare objects in array, merge duplicates with same property value, add property values to the merged object
我有一個對象數組,如果它們在對象鍵電子郵件中具有相同的屬性,我想合並對象。 重疊屬性需要添加到合並對象中。 最好使用新的對象鍵。 這似乎有點復雜。
[ { email: 'one@xyz.de',
SearchQuery: 'Abts, Tomma',
SearchResult: 1 },
{ email: 'one@xyz.de',
SearchQuery: 'Ernst, Max',
SearchResult: 3},
{ email: 'one@xyz.de',
SearchQuery: 'Sigmund Abeles ',
SearchResult: 1 },
{ email: 'two@xyz.de',
SearchQuery: 'Barlach',
SearchResult: 4 } ]
結果應該是這樣的
[ { email: 'one@xyz.de',
SearchQuery: 'Abts, Tomma',
SearchResult: 1
SearchQueryTwo: 'Ernst, Max',
SearchResultTwo: 3
SearchQueryThree: 'Sigmund, Abeles ',
SearchResultThree: 1 },
{ email: 'two@xyz.de',
SearchQuery: 'Barlach',
SearchResult: 4 }
]
擁有SearchResultOne
、 SearchResultTwo
、 SearchResultThree
等是可能的,但比它的價值更難,因此將其放入數組更有意義:
const inp = [ { email: 'one@xyz.de', SearchQuery: 'Abts, Tomma', SearchResult: 1 }, { email: 'one@xyz.de', SearchQuery: 'Ernst, Max', SearchResult: 3}, { email: 'one@xyz.de', SearchQuery: 'Sigmund Abeles ', SearchResult: 1 }, { email: 'two@xyz.de', SearchQuery: 'Barlach', SearchResult: 4 } ]; const oup = inp.reduce((acc, o) => { const queryResult = acc.find(qr => qr.email == o.email); if(queryResult) { queryResult.results.push({SearchResult:o.SearchResult, SearchQuery: o.SearchQuery}) } else { let newQR = {email: o.email, results: [{SearchResult:o.SearchResult, SearchQuery: o.SearchQuery}]}; acc.push(newQR); } return acc; }, []); console.log(JSON.stringify(oup));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.