javascript - 如何加入/合并 json 结果

标签 javascript json ecmascript-6

为了减少发送到客户端的有效负载,我的其余 api 仅返回子实体的 id,如下所示:

[  
   {  
      "id":369,
      "name":"Harlequin Enterprises Ltd",
      "description":"Buford Konopelski",
      "parent":{  
         "id":323
      }
   },
   {  
      "id":323,
      "name":"Heyday Books",
      "description":"Zola Rutherford",
      "parent":{  
         "id":3
      }
   },
   {  
      "id":3,
      "name":"Happy House",
      "description":"Mrs. Dwight Mohr",
      "parent":{  
         "id":null
      }
   }
]

是否有任何库可以帮助我将所有实体加入/合并到此中:

[  
   {  
      "id":369,
      "name":"Harlequin Enterprises Ltd",
      "description":"Buford Konopelski",
      "parent":{  
         "id":323,
         "name":"Heyday Books",
         "description":"Zola Rutherford",
         "parent":{  
            "id":3,
            "name":"Happy House",
            "description":"Mrs. Dwight Mohr",
            "parent":{  
               "id":null
            }
         }
      }
   },
   {  
      "id":323,
      "name":"Heyday Books",
      "description":"Zola Rutherford",
      "parent":{  
         "id":3,
         "name":"Happy House",
         "description":"Mrs. Dwight Mohr",
         "parent":{  
            "id":null
         }
      }
   },
   {  
      "id":3,
      "name":"Happy House",
      "description":"Mrs. Dwight Mohr",
      "parent":{  
         "id":null
      }
   }
]

//这是一个受 IVO GELOV 解决方案启发的简化解决方案:

var mapID = inputJSON.map((item) => item.id);
// attach parents to childreen
var normalized = inputJSON.map((item) =>
{
    var parentIndex = mapID.indexOf(item.parent.id);
    item.parent = inputJSON[parentIndex];
    return item;
});
console.log(JSON.stringify(normalized))

最佳答案

你必须使用 map

var inputJSON, mapID = {};

// create the map - allowing to get an item by ID
inputJSON.forEach((item) =>
{
  mapID[item.id] = item;
});

// attach parents to childreen
inputJSON.forEach((item) =>
{
  if(item.parent && item.parent.id && mapID[item.parent.id]) 
  {
    item.parent = mapID[item.parent.id]
  }
});

关于javascript - 如何加入/合并 json 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378941/

相关文章:

java - jackson - 必需的属性(property)?

ios - 解析来自 JSON 和 ios 的响应?

angular - 我应该在 Angular 的类中将方法写成箭头函数吗

unit-testing - 用 Jest 测试 ES6 模块

javascript - 省略具有来自另一个对象的某些深度值的对象

javascript - 我应该如何使用模块模式处理长 JavaScript 文件?

javascript - 可调整大小的处理程序在叠加弹出 div 向下滚动后移动

javascript - 如何选择 HTML 表格中一列的所有复选框?

iOS 在 POST 中发送 JSON 数组

javascript - 用 vanilla javascript 重写 React 功能组件