在JavaScript中的另一个数组中找到一个数组

时间:2019-01-25 10:30:41

标签: javascript arrays multidimensional-array

JS中是否有任何函数可以检查“较大的数组中是否存在数组?” 我尝试了array.includes()array.indexOf(),但它们对我不起作用... 例如我在这里除了一个真正的返回值:

parent = [[a,b],[c,d],[e,f]]
child = [c,d]

2 个答案:

答案 0 :(得分:1)

您的includes失败,因为您尝试匹配参考。您可以在此答案https://stackoverflow.com/a/54363784/9624435

上看到详细的解释

您可以使用filterevery

let parent = [['a','b'],['c','d'],['e','f']];
let child = ['c','d'];

let result = parent.filter(arr => arr.every(v => child.includes(v)));

console.log(result);

答案 1 :(得分:1)

让我们集中讨论.includes为何失败。

Array.includes使用以下功能检查是否相等:

function sameValueZero(x, y) {
  return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
}

由于您将数组作为元素,因此将使用引用复制它们,因此您正在检查数组的引用。因此失败了。

以下是示例:

const item1 = ['a', 'b'];
const item2 = ['c', 'd'];
const item3 = ['e', 'f']

const parent = [item1, item2, item3]
const child = item3;

console.log(parent.includes(child))

因此,您将不得不更深入地检查各个值。

参考文献: