2013-11-28 70 views
0

我已經從JSON數據是等獲得對象A的數組:檢查在陣列中的多個值與另一個數組

[Object { field1="2381", field2="1233", field3="46.44852", more...}, 
Object { field1="2381", field2="1774", field3="45.70752833333334", more...}] 

我有另一個數組B

["2381", "1187"] 

是否有一個檢查數組B的值是否存在於數組A中的方法?

我試圖像

A.map((B[0], B[1]), function(element) { 
    if (B[0] == element.field1 && B[1] == element.field2) 
     return true; 
    else 
     return false; 
}); 

但它沒有行之有效...

任何把戲?

+1

看看是否有幫助https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf – elclanrs

回答

1

要看看是否有至少一個項目一個匹配B.

A.some(function(value) { 
    return value.field1 == B[0] && value.field2 == B[1]; 
}); 
+0

最簡單的方法!謝謝! – Luigino

0

你可以使用一個函數像這樣的:

function check(arr, fn) { 
    var i = 0, l = arr.length; 
    for (; i < l; i++) { 
     if (fn(arr[i])) return true; 
    } 
    return false; 
} 

用法:

var A, B; 

A = [ 
    { field1: 1, field2: 2 }, 
    { field1: 1, field2: 3 }, 
    { field1: 2, field2: 3 } 
]; 

B = [1, 3]; 
check(A, function (item) { 
    return item.field1 === B[0] && item.field2 === B[1]; 
}); // true 

B = [2, 1]; 
check(A, function (item) { 
    return item.field1 === B[0] && item.field2 === B[1]; 
}); // false 
+0

你的意思是arr是我的數組A和fn是數組B? – Luigino

0

您可以使用嵌套for循環。沿線的東西:

var checker; //number to hold the current value 
for(x=0;x<arrayA.length; x++) //loop through the first array 
{ 
    checker = arrayA[x]; store the number in each element in the variable 
for(y=array.Indexof(arrayA, checker);y<arrayB.length; y++) /*don't start from the very first index of the array but rather from the last place where arrayA was*/ 
    { 
    if (arrayB[y] == checker) 
    { 
    Alert(checker + " is the same"); 
}//closes if 
}//closes for 
}//closes outer for loop 

很明顯,你會取代你的特殊需要的警報。我的語法可能有點不合時宜,但你可以獲得要點。希望這有助於...

相關問題