我有两个数组 - 一维和一维。
a = [[1,1],[2,2]];
b = [1,1];
我想检查'a'是否包含'b'之类的元素。 我们看到'a'constains [1,1]和b是[1,1]所以让我们检查一下:
a.indexOf(b)
它返回-1
,'a'不包含'b',我不明白。
干杯
答案 0 :(得分:4)
indexOf使用严格相等(===
)进行比较。你的元素必须是完全相同的对象。
所以
var a = [1,1];
var b = [a,[1,2]];
b.indexOf(a)// 0
因为a === a
但是
b.indexOf([1,1])// -1
因为[1,1]是一个与a
不同的对象,所以它们并不完全相同。
要做你想做的事,你需要做更多的事情。您可以遍历这些值并使用this question's answers中的内容来进行比较
答案 1 :(得分:1)
indexOf
returns -1 if it does not find a match in the array。您的数组a
不包含元素b
。
编辑:
为了澄清@JonathanLonowski所说的,没有匹配的原因是因为你正在进行严格的比较,比较参考,而不是值。