有没有办法检查数组是否包含具有特定值的数组?
就像,我有这个数组
drawn[0] = [0,0]
我后来想检查是否仍然包含[0,0]
,所以我会做类似
drawn[0] == [0,0]
但这只会返回false
,为什么?而且,更重要的是,我该怎么做呢?即使我尝试[0,0] == [0,0]
我得到false
作为回报?
请注意,数组并不总是只是零...
聚苯乙烯。我不想使用任何外部库,所以请保持简单的'javascript
答案 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]
时,都会创建一个新数组;所以他们注册为不同的对象。您需要遍历元素并检查元素是否相同。