2015-05-08 76 views
-2

是否有可能比較數組JavaScript的比較兩個數組對象的不同

var maps1= [{name: triangle, value: 1},{name: square, value: 2}]; 
var maps2= [triangle,rectangle]; 

我想這兩個數組比較,如果MAP2的對象與MAP1的對象相匹配的話,我需要得到MAP1的價值,就像上面的exmaple三角形匹配一樣,我想要得到三角形的值。

function identical (arr1, arr2) { 

     if(arr1.length != arr2.length) { 
      return false; 
     } 

     var exists = arr1.length; 
     for(var i = 0; i<arr1.length; i++) { 
      for(var j =0; j<arr2.length ; j++) { 
       if(Object.keys(arr1[i]).equals(Object.keys(arr2[j]))) { 
        exists--; 
       } 
      } 
     } 

     return !exists; 
    } 
+1

是什麼'triangle'的價值?它是自我價值 – ozil

+0

http://jsfiddle.net/o8t22ert/1/也許這樣的事情? (檢查輸出的JavaScript控制檯),儘管它在那裏工作 – briosheje

回答

0
var map1= [{name: 'triangle', value: '1'},{name: 'square', value: '2'}]; 
var map2= ['triangle','rectangle']; 
var result=[]; 
for(i=0; i<map2.length; i++){ 
    var comp= map2[i]; 
    for(j=0; j<map1.length; j++){ 
     if(map1[j].hasOwnProperty('name')){ 
      if(map1[j].name == comp){ 
       result.push(map1[j]); 
      } 
     } 
    } 
} 
alert(JSON.stringify(result)); 

DEMO

+0

..謝謝你,它爲我工作 – teekib

0
function com(arr1, arr2){ 
    return arr1.filter(function(v){ 
    if(arr2.indexOf(v.name) !== -1) return true; 
    }) 

} 
+1

你_do_意識到這只是一個'返回arr2.indexOf(v.name)!== -1;'在功能的權利? –

+0

經過測試並與fn以外的值一起工作,我錯過了什麼? – vizidev