2016-09-26 94 views
0

我有2個對象數組。檢查相同元素的陣列,然後推到第三個陣列

比方說:

arr1 = [object, object, object]; 

arr2 = [object, object, object]; 

我如何在它們之間迭代並檢查是否有同一個對象的屬性值,然後推入第三個陣列。 我曾經嘗試這樣做:

for(var i = 0; i < arr1.length; i++){ 
    for(var j = 0; j < arr2.length; j++){ 
     if (arr1[i].id == arr2[j].id){ 
      arr3.push(arr1[i]) 
    } 
    } 

這不起作用然而

+0

什麼部分不起作用?你有任何控制檯錯誤?我看起來很合理。你會得到什麼輸出?你確定你實際上有任何具有相同'id'的匹配對象嗎? – musefan

+0

這兩個數組中的對象是否具有相同的順序? –

+0

@MB不,他們不是,這是一個問題嗎? –

回答

3

你缺少右花括號中,它的作品你的if語句,其他吳丹:

for(var i = 0; i < arr1.length; i++){ 
    for(var j = 0; j < arr2.length; j++){ 
     if (arr1[i].id == arr2[j].id){ 
      arr3.push(arr1[i]) 
     } 
    } 
} 
+0

我認爲這是一個錯字,否則我會得到一個語法錯誤 –

+0

好吧,我運行你的代碼,它適用於我,如果它不與固定分號一起工作,那麼問題可能與您的對象中的數據 – StackOverMySoul

1

如果你不不介意使用第三方庫,.. lodash有一個功能,將爲你做。

例如。

var arr3 = _.intersectionWith(arr1,arr2,function (a,b) { return a.id === b.id }) 
1

爲什麼嵌套循環,如果你只需要1(甚至沒有)?

arr1.forEach(object => { 
    if (arr2.indexOf(object) !== -1) { 
     arr3.push(object); 
    } 
});