如何解决比较数组中的对象,合并具有相同属性值的重复项,将属性值添加到合并的对象
我有一个对象数组,如果对象密钥电子邮件中的对象具有相同的属性,我想合并它们。重叠的属性需要添加到合并的对象中。使用新的对象键将是最好的。 这似乎有点复杂。
[ { email: 'one@xyz.de',SearchQuery: 'Abts,Tomma',SearchResult: 1 },{ email: 'one@xyz.de',SearchQuery: 'Ernst,Max',SearchResult: 3},SearchQuery: 'Sigmund Abeles ',{ email: 'two@xyz.de',SearchQuery: 'Barlach',SearchResult: 4 } ]
结果应该类似于
[ { email: 'one@xyz.de',SearchResult: 1
SearchQueryTwo: 'Ernst,SearchResultTwo: 3
SearchQueryThree: 'Sigmund,Abeles ',SearchResultThree: 1 },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},SearchQuery: 'Sigmund Abeles ',{ 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));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。