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

Javascript 检查二维数组是否包含一维,javascript,arrays,indexof,Javascript,Arrays,Indexof,我有两个数组,一个是一维的,一个是二维的 a = [[1,1],[2,2]]; b = [1,1]; 我想检查“a”是否有类似于“b”的元素。 我们看到“a”包含[1,1],b是[1,1],所以让我们检查一下: a.indexOf(b) 它返回-1,“a”不包含“b”,我也不明白 干杯。您的数组a不包含元素b 编辑: 为了澄清@JonathanLonowski所说的,不匹配的原因是因为您正在进行严格的比较,比较的是引用,而不是值。使用严格相等(==)进行indexOf比较。元素必须是完全相同

我有两个数组,一个是一维的,一个是二维的

a = [[1,1],[2,2]];
b = [1,1];
我想检查“a”是否有类似于“b”的元素。 我们看到“a”包含[1,1],b是[1,1],所以让我们检查一下:

a.indexOf(b)
它返回
-1
,“a”不包含“b”,我也不明白

干杯。您的数组
a
不包含元素
b

编辑:


为了澄清@JonathanLonowski所说的,不匹配的原因是因为您正在进行严格的比较,比较的是引用,而不是值。

使用严格相等(
==
)进行indexOf比较。元素必须是完全相同的对象

所以

因为
a==a

但是

因为[1,1]与
a
是不同的对象,所以它们不是严格相等的


要想做你想做的事情,你需要做更多的事情。您可以循环使用这些值,并使用类似whats in的内容进行比较,这就是我写的。问题是为什么。我们看到“a”和“b”包含[1,1]@Tukkan,因为每个
[…]
都是
新数组()
==任何其他
数组
。它们可能很相似,尤其是人眼,但它们并不相同或相等。还有没有其他方法来检查它并返回真值value@Tukkan要么拥有
a
实际上包含
b
因此它们共享引用--
var b=[1,1],a=[b[2,2]]或者,您必须使用深度比较来遍历对象并比较它们包含的基本值。有这样一个例子。许多单元测试框架也有它的实现。示例:。谢谢@Jonathan Lonowskit这真的很有帮助。它返回
-1
,因为
b
不在
a
中<代码>[1,1]==[1,1]
在JavaScript中为
false
var a = [1,1];

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

b.indexOf(a)// 0
b.indexOf([1,1])// -1