2017-10-12 71 views
3

我有两个JSON一个是父母,另一个是孩子,我想合并两个。请帮忙。看下面的例子如何获得与父子关系的JSON结果?(见详细信息)

两个表如下。

var parent = [{id : 1, name : 'India'}, 
      {id : 2, name : 'USA'}, 
      {id : 3, name : 'Japan'}, 
      {id : 4, name : 'UK'}] 

var child = [{id: 1, parentId: 1, city : 'Ahmedabad', population:100}, 
      {id: 2, parentId: 1, city : 'Mumbai', population:200}, 
      {id: 3, parentId: 2, city : 'NewYork', population:300}, 
      {id: 4, parentId: 2, city : 'Chicago', population:400}, 
      {id: 5, parentId: 3, city : 'Tokyo', population:500}] 

我想导致像下面

var result = 
[{id : 1, name : 'India', city:[{name : 'Ahmedabad', population:100},{name : 'Mumbai', population:200}]}, 
{id : 2, name : 'USA', city:[{name : 'NewYork', population:300},{name : 'Chicago', population:400}]}, 
{id : 3, name : 'Japan', city:[{name : 'Tokyo', population:500}]}, 
{id : 4, name : 'UK', city:[]} 
] 
+0

你的尝试在哪里? – CBroe

+0

我有两个表一父母和另一个孩子。我想要描述两个数据的json。通过选择查询,我获取了父表数据和子数据。使用循环,我们可以将子数据添加到父项中,但我面临问题。我需要简单而简单的逻辑来实现它。这些是虚拟数据。 – MohammedAshrafali

+0

我没有要求你重复你想要的描述,而是向我们展示你的尝试。 _“带循环,我们可以将孩子数据添加到家长,但我面临问题”_ - **显示我们**,而不是告诉我们一个故事... – CBroe

回答

2
var result =JSON.parse(JSON.stringify(parent)); 

result.map(function (d, i) { 
    d.city = (child.filter(function (d1) { 
    if (d1.parentId == d.id) { 
     return d1; 
    } 
    })).map(function(d2){ 
    return {city:d2.city,population:d2.population} 
    }); 
}) 

现在结果变量包含您预期的结果。

相关问题