在javascript中的另一个数组中查找数组

在javascript中的另一个数组中查找数组,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,JS中是否有任何函数可以检查较大数组中是否存在数组? 我尝试了array.includes和array.indexOf,但它们对我无效。。。 例如,除此处的真实返回值外: parent = [[a,b],[c,d],[e,f]] child = [c,d] 您的Include失败,因为您正在尝试匹配引用。你可以在这个答案上看到一个非常详细的解释 您可以使用过滤器和 让父项=['a','b'],['c','d'],['e','f']; 让child=['c','d']; 让result=par

JS中是否有任何函数可以检查较大数组中是否存在数组? 我尝试了array.includes和array.indexOf,但它们对我无效。。。 例如,除此处的真实返回值外:

parent = [[a,b],[c,d],[e,f]]
child = [c,d]
您的Include失败,因为您正在尝试匹配引用。你可以在这个答案上看到一个非常详细的解释

您可以使用过滤器和

让父项=['a','b'],['c','d'],['e','f']; 让child=['c','d']; 让result=parent.filterarr=>arr.everyv=>child.includesv; console.logresult 让我们关注为什么。包括失败

Array.includes使用以下函数检查相等性:

函数sameValueZerox,y{ 返回x==y | | typeof x=='number'和&typeof y=='number'和&isNaNx&&isNaNy; } 由于您将数组作为元素,所以它们是使用引用复制的,所以您将检查数组的引用。因此它失败了

以下是一个示例:

常量项1=['a','b']; 常量项2=['c','d']; 常数项3=['e','f'] const parent=[item1、item2、item3] const child=第3项;
console.logparent.includeChild要理解为什么您尝试的方法无效,关键是要理解父[1]与子[1]不同。它们是两个独立的对象,碰巧都是数组,并且碰巧依次具有相同的子对象。但JS不知道这一点。因此,您需要添加逻辑来比较父级的[c,d]与子级的[c,d],并确定它们在您看来是相同的。将此标记为重复,因为它本质上是:我想做父级[1]==子级,如何做?父元素也是数组这一事实与问题无关。@ChrisG正如您所建议的,问题不在于比较。这是关于include失败的原因。所以,我想这不是一个骗局。不过,我会把它添加到我的答案中reference@Rajesh但includes是基于比较的,因此OP隐式地假设父[1]==子项的计算结果应为true。副本解释了为什么不是这样,并显示了一个解决方案。换句话说,这是一个完美的骗局。我对这个问题的任何回答都必须说明include失败的原因。这是一个很重要的问题,要理解为什么要这样处理这个问题。编辑:我对此投了反对票,因为即使child有其他元素,它也会认为这两个元素是相同的。