说我有:
a=[[1,2],[3,4],[5,6]]
这是错的吗?
a.indexOf([1,2])
为什么-1?
答案 0 :(得分:0)
因为[1,2] == [1,2]
是false
javascript对象的不同实例没有相同之处。
来自==
上的the MDN:
如果两个操作数都是对象,则JavaScript比较内部 当操作数引用同一个对象时,引用是相等的 存储器中。
您可以构建自己的函数来查找数组中的数组,但在这种情况下,因为您必须检查内部数组的所有元素(或构建哈希代码),这将不会很快。你最好避免这种搜索。
答案 1 :(得分:0)
你不能比较JAVASCRIPT中的ARRAYS!
当您检查相等条件时,JavaScript数组本质上是从对象继承的,这些两个对象的内部引用是不同的,尽管所有元素都相同,但它返回-1
所以当你调用.indexOf时,它会比较失败的数组,因此得到-1
您需要构建自己的函数,深入检查Array及其子数组是否相等,或者您可以使用某些库,如_.js