2012-05-30 208 views
0

我在javascript中有兩個對象數組。像arr1[] = {emp1,emp2,emp3}其中inturn emp1emp1.nameemp1.address作爲財產。Javascript對象數組比較

喜歡的東西

arr1={object {name='a',address='b'} {name='c',address='d'} {name='e',address='f'} }. 
arr2={object {name='a',address='b'}}. 

我想比較兩個數組對象的name財產和填充缺少的項目到另一個陣列。所以結果將是結果[] = {'c','e'}

什麼是實現這一目標的有效方式?我不期望代碼,請指引我正確的方向。謝謝。

+0

我能想到的是,對所有的'arr2'運行每個'arr1'的值/元素,然後調用'arr2.push(arr1 [i])',但jQuery應該有一個更簡單的方法來檢查一個值/元素是一個數組,例如[jQuery.inArray()](http://api.jquery.com/jQuery.inArray/),它放棄了子循環。 –

+0

你試過了什麼?我會考慮做一個接受兩個數組的函數,然後返回第三個數組。我不知道你所說的'缺少物品',所以你必須自己做。在函數中你可以使用for循環和一些if語句來比較。 可能有幫助 – GreenGiant

+1

我認爲這將是更有效的,而不是一個數組,你使用的嵌套對象的對象所述對象的鍵是員工唯一的ID。在這一點上,你可以擴展object1與object2導致object1包含object2中的所有員工,這些員工還不在object1中 –

回答

0

Array.filter方法可能會有幫助。查看更多關於here

0

功能可能看起來像

 function foo(arr1,arr2){ 
    var arr3 = new Array(); 
    var x=0; 
    for (var j =0; j<arr1.length; j++) 
     for(var i=0; i<arr2.length; i++) 
      if(arr1[j].name != arr2[i].name){ 
       arr3[x]=arr1[i]; 
       x++; 
    } 
return(arr3); 
    } 

這將循環通過2個陣列,並且如果元素是不一樣的,他們然後將被投入的第三陣列英寸這是檢查aarr1中的任何名稱是否與arr2中的相同。它不檢查其他方式(即,如果arr2有一個不存在於arr1中的元素,它不會放入arr3中),但至少應該讓你開始。該函數將接受2個數組並返回第三個。