检查二维数组是否包含一维

时间:2013-03-26 00:45:14

标签: javascript arrays indexof

我有两个数组 - 一维和一维。

a = [[1,1],[2,2]];
b = [1,1];

我想检查'a'是否包含'b'之类的元素。 我们看到'a'constains [1,1]和b是[1,1]所以让我们检查一下:

a.indexOf(b)

它返回-1,'a'不包含'b',我不明白。

干杯

2 个答案:

答案 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不同的对象,所以它们并不完全相同。

MDN Docs

要做你想做的事,你需要做更多的事情。您可以遍历这些值并使用this question's answers中的内容来进行比较

答案 1 :(得分:1)

indexOf returns -1 if it does not find a match in the array。您的数组a不包含元素b

编辑:

为了澄清@JonathanLonowski所说的,没有匹配的原因是因为你正在进行严格的比较,比较参考,而不是值。