【发布时间】:2012-09-18 05:12:04
【问题描述】:
我有一个包含对象的数组。
类似这样的:
var arr = new Array(
{x:1, y:2},
{x:3, y:4}
);
当我尝试时:
arr.indexOf({x:1, y:2});
它返回-1。
如果我有字符串或数字或其他类型的元素但对象,那么indexOf() 可以正常工作。
有谁知道为什么以及我应该如何在数组中搜索对象元素?
当然,我的意思是除了为对象创建字符串哈希键并将其提供给数组之外的方法......
【问题讨论】:
-
我想知道为什么不能选择散列?
-
请注意,根据定义,两个对象永远不会相等,即使它们具有完全相同的属性名称和值。
objectA === objectB当且仅当 objectA 和 objectB 引用同一个对象。 -
规范没有对字符串这么说:如果它们都是字符串并且具有相同的字符,则它们是相等的。
-
我同意 === 比较器,但为什么它不适用于 == 这个比较器我不明白...
-
@dystroy—如果您使用字符串对象(并且 OP 正在谈论对象),它们永远不会相等,因为它们是类型对象,而不是字符串。
标签: javascript arrays search object indexof