0

有什么方法可以检查数组是否包含具有特定值的数组?

就像,我有这个数组

 drawn[0] = [0,0]

后来我想检查是否仍然包含[0,0],所以我会做类似的事情

 drawn[0] == [0,0]

但这只是返回一个false,为什么?而且,更重要的是,我应该怎么做呢?即使我尝试[0,0] == [0,0]我也会得到false回报?

请注意,数组并不总是零......

附言。我不想使用任何外部库,所以请保持纯 ol' javascript

4

4 回答 4

4

每个人都说你不能比较数组,因为它们是对象。那是真实的。您有几个可行的解决方案,包括嵌套循环(公然或抽象)。其他人也提出了这个建议。

一个可能更简单的替代方法是比较toString两个数组的值:

drawn[0].toString() == [0,0].toString()

这确实要求数组内容的顺序相同。

于 2013-02-22T02:15:41.690 回答
3

JavaScript 中的数组只有在它们是同一个对象时才彼此相等。

您需要进行内容检查:

if (drawn[0].every(function(item) { return item === 0; })) {
    // all entries are zero.
}

也可以看看:Array.every()

或者在您的特定情况下,只需:

if (drawn[0][0] === 0 && drawn[0][1] === 0) {
    // equal to [0, 0]
}
于 2013-02-22T02:13:18.190 回答
2

使用 for 循环检查,您无法与简单的比较进行比较,因为它比较的是引用而不是值:

[0]    !== [0]    // true
[0][0] ==  [0][0] //true
于 2013-02-22T02:14:12.720 回答
0

对象(包括数组)通过对象标识进行比较。每次编写[0, 0]时都会创建一个新数组;所以他们注册为不同的对象。您需要自己遍历元素并检查元素是否相同。

于 2013-02-22T02:13:51.833 回答