javascript搜索数组索引数组?

时间:2013-01-19 16:55:10

标签: javascript

说我有:

a=[[1,2],[3,4],[5,6]]

这是错的吗?

a.indexOf([1,2])

为什么-1?

2 个答案:

答案 0 :(得分:0)

因为[1,2] == [1,2]false

javascript对象的不同实例没有相同之处。

来自==上的the MDN

  

如果两个操作数都是对象,则JavaScript比较内部   当操作数引用同一个对象时,引用是相等的   存储器中。

您可以构建自己的函数来查找数组中的数组,但在这种情况下,因为您必须检查内部数组的所有元素(或构建哈希代码),这将不会很快。你最好避免这种搜索。

答案 1 :(得分:0)

不能比较JAVASCRIPT中的ARRAYS!

当您检查相等条件时,JavaScript数组本质上是从对象继承的,这些两个对象的内部引用是不同的,尽管所有元素都相同,但它返回-1

所以当你调用.indexOf时,它会比较失败的数组,因此得到-1

您需要构建自己的函数,深入检查Array及其子数组是否相等,或者您可以使用某些库,如_.js