在数组中查找对象

时间:2015-06-29 13:44:07

标签: javascript arrays object

我有两个我正在比较的对象。我有一个对象数组,我试图看看数组是否包含某个对象。我认为应该找到它,但事实并非如此。这是数组中的对象:

Array Object

这是我要找的对象:

Match Object

我正在使用:



if (collection.indexOf(object) !== -1) {
  //do something  
}




它返回索引-1,即使在我看来对象匹配。我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:1)

试试这个,如果所有字段都是等于返回true

function testContains(arrayOfObject, lookingObject )

    var index;

    for (index = 0; index < arrayOfObject.length; ++index) {

        var o = arrayOfObject[index]);

        if(JSON.encode(o)===JSON.encode(lookingObject)) {

            return true;
        }

    }

    return false;
}

答案 1 :(得分:0)

.attr('data-...')仅适用于数字,字符串,布尔等基本类型。它不会与匹配对象进行深度比较。

以下内容应该有效:

indexOf()

答案 2 :(得分:0)

如果您可以使用Lodash(在我看来它非常有用且值得),您可以使用_.find _.find(collection, object)

或者如果您只想知道对象是否存在于数组中,您可以执行以下操作: _.includes(collection, object)