JS中是否有任何函数可以检查“较大的数组中是否存在数组?”
我尝试了array.includes()
和array.indexOf()
,但它们对我不起作用...
例如我在这里除了一个真正的返回值:
parent = [[a,b],[c,d],[e,f]]
child = [c,d]
答案 0 :(得分:1)
您的includes
失败,因为您尝试匹配参考。您可以在此答案https://stackoverflow.com/a/54363784/9624435
您可以使用filter
和every
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))
因此,您将不得不更深入地检查各个值。