我有两个我正在比较的对象。我有一个对象数组,我试图看看数组是否包含某个对象。我认为应该找到它,但事实并非如此。这是数组中的对象:
这是我要找的对象:
我正在使用:
if (collection.indexOf(object) !== -1) {
//do something
}

它返回索引-1,即使在我看来对象匹配。我在这里错过了什么吗?
答案 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)