2017-06-06 119 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