2015-03-18 195 views
5

如何比較AngularJS中的兩個數組,並返回匹配值?angularjs比較兩個數組

這是第一個數組:

[{ 
    "id":2, 
    "student_name":"LiSa", 
    "alien":"A", 
    "world":"Sun", 
    "justification":"i like sent this one", 
    "submit_time":null 
},{ 
    "id":1, 
    "student_name":"Liz", 
    "alien":"B", 
    "world":"Earth", 
    "justification":null, 
    "submit_time":"2014-09-25T08:37:34.526-05:00" 
}] 

這裏是第二個:

[{ 
    "id":1, 
    "alien":"A", 
    "world":"Sun", 
    "color":"red" 
},{ 
    "id":2, 
    "alien":"A", 
    "world":"Mercury", 
    "color":"red" 
},{ 
    "id":3, 
    "alien":"B", 
    "world":"Earth", 
    "color":"red" 
},{ 
    "id":4, 
    "alien":"B", 
    "world":"Moon", 
    "color":"red" 
}] 

我要檢查是否爲外國人世界值在這兩個相互匹配陣列。然後我可以從第二個數組中獲得顏色的值。

這裏是我把控制器代碼:

angular.forEach(arr1, function(value1, key1) { 
    angular.forEach(arr2, function(value2, key2){ 
     if(value1.alien === value2.alien && value1.world === value2.world){ 
      console.log(value2.color); 

     } 
    }); 
}); 

我用普通angular.forEach?我怎樣才能做到這一點?我在哪裏存儲顏色值?

+0

這些都不是多維陣列(它是一個數組的數組),但只​​是一個對象陣列。 你應該嘗試更詳細地解釋你的問題,這是不明顯的,你試圖比較/測試。 – duncanhall 2015-03-18 22:31:06

+0

感謝您的評論,@duncanhall我想在array1和array2中外星人和世界都相等時獲得顏色值。我修改了這個問題,這有道理嗎? – Lisa 2015-03-19 02:42:46

回答

10

像鄧肯說的,這些都是對象的數組而不是多維數組。在這裏,我使用angulars .forEach方法遍歷兩個數組,然後比較對象的屬性。

我添加了一條評論,你會得到你的匹配顏色。

angular.forEach(arr1, function(value1, key1) { 
    angular.forEach(arr2, function(value2, key2) { 
     if (value1.alien === value2.alien && value1.world === value2.world) { 
      // here is where you grab the value2.color 
     } 
    }); 
}); 

這裏的一個fiddle

+0

謝謝你的快速回答,但由於某種原因,它不起作用。 – Lisa 2015-03-19 02:37:46

+0

明白了,我的代碼中有一個額外的「)」。現在它可以工作,謝謝你! – Lisa 2015-03-19 03:25:02