2017-06-06 141 views
1

我有3套JSON数据角添加项目到JSON对象

data1 [{id:1, systemName: "foo", moreInfo: "blah}, 
     {id:2, systemName: "boo", moreInfo: "blahBlah}] 


data2 [{systemName: "foo",count: 21}, 
     {systemName: "boo",count: 454}] 

data3 [{systemName: "foo",count: 643}, 
     {systemName: "boo",count: 674}] 

我需要的是从数据2和3取数,并将其与新添加到各自的对象数据1名称,如data2Count和Data3Count

所以数据1是这样的:

data1 [{id:1, systemName: "foo", moreInfo: "blah, data2Count: 21, data3Count: 643}, 
     {id:2, systemName: "boo", moreInfo: "blahBlah, data2Count: 454, data3Count: 674}] 

目前我只能做到这一点:

data1 [{id:1, systemName: "foo", moreInfo: "blah"} 
     {id:2, systemName: "boo", moreInfo: "blahBlah"} data2Count: 454] 

使用:

angular.forEach(data1, function(value1, key1) { 
    angular.forEach(data2, function(value0, key0) { 
     if (value1.systemName === value1.systemName) { 
      $scope.sysFlow.data2Count = value1.count 
     } 
    }) 
}) 

回答

1

您可以使用Array#map做这样的事情:

var data1 = [ 
 
    {id:1, systemName: "foo", moreInfo: "blah"}, 
 
    {id:2, systemName: "boo", moreInfo: "blahBlah"} 
 
    ] 
 

 

 
var data2 = [ 
 
    {systemName: "foo",count: 21}, 
 
    {systemName: "boo",count: 454} 
 
    ] 
 

 
var data3 = [ 
 
    {systemName: "foo",count: 643}, 
 
    {systemName: "boo",count: 674} 
 
    ] 
 
    
 
data1 = data1.map(function(obj) { 
 

 
    obj.data2Count = data2.filter(function(o) { 
 
    return o.systemName === obj.systemName 
 
    })[0].count; 
 

 
    obj.data3Count = data3.filter(function(o) { 
 
    return o.systemName === obj.systemName 
 
    })[0].count; 
 

 
    return obj; 
 
}) 
 

 
console.log(data1)

+1

完美,非常感谢 – H30

+0

毫米@tan几个问题,以及它与我们不能使用''''''''''''''''前端(doh)我们的chrome版本的问题如何编辑更改你可以使用常规的''''''' – H30

+0

@ H30更新了答案 – tanmay