使用另一个数组检查数组中的多个值

时间:2013-11-28 07:23:27

标签: javascript

我有一个从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; 
});

但是效果不好......

任何技巧?

3 个答案:

答案 0 :(得分:1)

查看A中是否至少有一个与B匹配的项目。

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

答案 1 :(得分: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

答案 2 :(得分: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

显然,您会根据自己的特殊需求替换警报。我的语法可能有点偏,但你得到了要点。希望这会有所帮助...