var arr1= [];
var value = "value";
if ($.inArray(value, arr1) !== -1){
//value found
}
要检查数组中是否存在值,我们使用上面的代码。我需要的是检查数组中的值是否存在于另一个数组中。我做的是下面。但我不确定为什么我总是找不到,即使在数组中有相同的值。任何建议表示赞赏
var arr1 = [{
"id": "1"
}, {
"id": "2"
}]
var arr2 = [{
"id": "2"
}, {
"id": "3"
}]
$.each(arr2, function (index, value) {
console.log(value.id);
if ($.inArray(value.id, arr1) !== -1) {
alert('found');
} else {
alert('q');
}
});
答案 0 :(得分:1)
那是因为你的内部比较将id值(“2”,“3”)与arr1中的对象(不是值“1”和“2”)进行比较。
即使您确实比较了对象(value
而不是value.id
),它也无法正常工作。这是因为对象的定义相等(或者说缺少......)。
在JavaScript中比较对象时,比较是基于参考的,而不是基于值的。考虑一下:
alert({a:1} == {a:1})
您在第一个示例中没有看到此问题的原因是字符串相等是基于的值。
为了克服这个问题,您需要比较对象中的值或键值对。