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