为了账号安全,请及时绑定邮箱和手机立即绑定

比较数组中的对象,合并具有相同属性值的重复项,将属性值添加到合并的对象

比较数组中的对象,合并具有相同属性值的重复项,将属性值添加到合并的对象

梵蒂冈之花 2023-03-24 14:20:39
我有一个对象数组,如果它们在对象键电子邮件中具有相同的属性,我想合并这些对象。需要将重叠属性添加到合并对象中。使用新的对象键最好。这似乎有点复杂。[ { 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 } ]
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

拥有 , 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));


查看完整回答
反对 回复 2023-03-24
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信