如果2数组jquery中存在值,则检查2数组

时间:2015-08-27 07:06:03

标签: javascript jquery arrays

var arr1= [];
var value = "value";

if ($.inArray(value, arr1) !== -1){
    //value found
}

要检查数组中是否存在值,我们使用上面的代码。我需要的是检查数组中的值是否存在于另一个数组中。我做的是下面。但我不确定为什么我总是找不到,即使在数组中有相同的值。任何建议表示赞赏

FIDDLE

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');
    }
});

1 个答案:

答案 0 :(得分:1)

那是因为你的内部比较将id值(“2”,“3”)与arr1中的对象(不是值“1”和“2”)进行比较。

即使您确实比较了对象(value而不是value.id),它也无法正常工作。这是因为对象的定义相等(或者说缺少......)。

在JavaScript中比较对象时,比较是基于参考的,而不是基于值的。考虑一下:

alert({a:1} == {a:1})

您在第一个示例中没有看到此问题的原因是字符串相等是基于的值。

为了克服这个问题,您需要比较对象中的值或键值对。