检查数组是否包含与新数组具有相同值的数组

时间:2013-02-22 02:10:30

标签: javascript

有没有办法检查数组是否包含具有特定值的数组?

就像,我有这个数组

 drawn[0] = [0,0]

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

的事情
 drawn[0] == [0,0]

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

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

聚苯乙烯。我不想使用任何外部库,所以请保持简单的'javascript

4 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分: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]
}

答案 2 :(得分:2)

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

[0]    !== [0]    // true
[0][0] ==  [0][0] //true

答案 3 :(得分:0)

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