我有一个从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;
});
但是效果不好......
任何技巧?
答案 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
显然,您会根据自己的特殊需求替换警报。我的语法可能有点偏,但你得到了要点。希望这会有所帮助...