Javascript 比较阵列中的对象,合并具有相同属性值的重复项,向合并对象添加属性值
我有一个对象数组,如果对象在对象键电子邮件中具有相同的属性,我希望合并对象。需要将重叠特性添加到合并对象中。使用新的对象关键点将是最好的。 这似乎有点复杂Javascript 比较阵列中的对象,合并具有相同属性值的重复项,向合并对象添加属性值,javascript,node.js,arrays,javascript-objects,Javascript,Node.js,Arrays,Javascript Objects,我有一个对象数组,如果对象在对象键电子邮件中具有相同的属性,我希望合并对象。需要将重叠特性添加到合并对象中。使用新的对象关键点将是最好的。 这似乎有点复杂 [ { email: 'one@xyz.de', SearchQuery: 'Abts, Tomma', SearchResult: 1 }, { email: 'one@xyz.de', SearchQuery: 'Ernst, Max', SearchResult: 3}, { email: 'on
[ { 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 }
]
有
searchresulttone
、SearchResultTwo
、SearchResultThree
等是可能的,但比实际困难得多,因此将其放入数组更有意义:
const inp=[{email:'one@xyz.de',
SearchQuery:'Abts,Tomma',
搜索结果:1},
{电子邮件:'one@xyz.de',
SearchQuery:'Ernst,Max',
搜索结果:3},
{电子邮件:'one@xyz.de',
SearchQuery:'Sigmund Abeles',
搜索结果:1},
{电子邮件:'two@xyz.de',
SearchQuery:'Barlach',
搜索结果:4}];
常数组=输入减少((acc,o)=>
{
const queryResult=acc.find(qr=>qr.email==o.email);
如果(查询结果)
{
queryResult.results.push({SearchResult:o.SearchResult,SearchQuery:o.SearchQuery})
}
其他的
{
让newQR={email:o.email,结果:[{SearchResult:o.SearchResult,SearchQuery:o.SearchQuery}]};
acc.push(新QR);
}
返回acc;
}, []);
log(JSON.stringify(oup))代码>你被困在哪里了,你能发布你尝试了什么吗?也许不用SearchQuery、SearchQueryTwo等,用它制作一个数组?这样,每个对象将始终具有相同数量的属性。谢谢!对于所有有兴趣在之后展平结果数组的人,请检查: