【问题标题】:How to merge multiple Objects with similar keys from an array in javascript如何在javascript中合并具有相似键的多个对象
【发布时间】:2017-08-07 16:21:29
【问题描述】:

所以我有以下 JSON。我正在寻找的结果是,如果有多个对象具有相同的 site_id,则创建一个包含 site_id、用户数组和合并在一起的其余属性的对象。 我尝试使用reduce,但它不起作用:D

提前谢谢你

{
        "response": [
            {
                "site_id": "4587c4183c312dd82309be6cdae7bbd6",
                "name": "esse",
                "lat": 82.3172,
                "lon": -30.0668,
                "company": "256090f4d3a41f34096876b71ee03694",
                "user_id": "2d3393051386426adca86c13362e6f46",
                "UserName": "Juliet44",
                "Password": "Test",
                "FirstName": "Kristy",
                "LastName": "Goldner",
                "Company": "256090f4d3a41f34096876b71ee03694",
                "Email": "Kassandra37@hotmail.com",

            },
            {
                "site_id": "4587c4183c312dd82309be6cdae7bbd6",
                "lat": 82.3172,
                "lon": -30.0668,
                "company": "256090f4d3a41f34096876b71ee03694",
                "user_id": "2f2a174f63f7e277630eb808974dfd05",
                "UserName": "Marguerite_Smith34",
                "Password": "Test",
                "FirstName": "Christian",
                "LastName": "Gerhold",
                "Company": "256090f4d3a41f34096876b71ee03694",
                "Email": "Urban.Boyer@yahoo.com",
            },
            {
                "site_id": "94fc61eee3c0d01abace7a2feb84bc4c",
                "name": "blanditiis",
                "lat": 13.3673,
                "lon": 54.3085,
                "company": "256090f4d3a41f34096876b71ee03694",
                "user_id": "3f85f1a435df6c3ca4ac944116515c04",
                "UserName": "Tyrell.Schimmel",
                "Password": "Test",
                "FirstName": "Lucius",
                "LastName": "O'Conner",
                "Company": "256090f4d3a41f34096876b71ee03694",
                "Email": "Eino.Hackett@gmail.com",
            },
        ]
    }

【问题讨论】:

  • “我尝试使用 reduce” ...显示您尝试过的内容。 Stackoverflow 不是免费的代码编写服务。这里的目标是帮助您修复您的代码。花点时间阅读How to Ask
  • 你能显示你想要的输出吗
  • site_idCompanycompany有什么区别?

标签: javascript arrays sorting object reduce


【解决方案1】:

可能其余运算符是您的朋友。如果你真的需要减少,我不确定,一个简单的 forEach 就可以了:

 var hash={}, result = [];

 response.forEach(function({site_id,...rest}){
  if(!hash[site_id]){
    result.push(hash[site_id]={site_id});
  }
  let el = hash[site_id];
  for(key in rest){
    if(el[key]){
      el[key].push(rest[key]);
     }else{
      el[key] = [rest[key]];
    }
  }
 });

【讨论】:

  • 是的,这非常有效,我设法像你一样解决了这个问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 2016-11-21
  • 1970-01-01
相关资源
最近更新 更多