0

说我有:

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

这是错的吗?

a.indexOf([1,2])

为什么是-1?

4

2 回答 2

0

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

javascript 对象的不同实例不存在相等性。

MDN==

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

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

于 2013-01-19T17:08:47.990 回答
0

不能在 JAVASCRIPT 中比较数组!

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

因此,当您调用 .indexOf 时,它将比较失败的数组,因此您得到 -1

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

于 2013-01-19T17:10:55.293 回答