我将此数组作为主数组。
features= [
'6776c2ea484f9fcf986bc607',
'6776c2fc484f9fcf986bc61b',
'6776c2f3484f9fcf986bc611',
'6776c2e0484f9fcf986bc5fd',
'6776c36e484f9fcf986bc663',
'6776c378484f9fcf986bc66d',
'6776c4d7484f9fcf986bc77b'
],
我将此数组作为子数组。
const sub_features = [
['6776c2e0484f9fcf6bc5fd', '6776c2d5484f9fcf9865f3'],
['84sa6d8f46s8d4f6sd6f84', '80as6df468as408a46df48', '70as4df468as401a46df48'],
['6776c4e6484f9fcf986bc785'],
];
如何检查 features 数组是否至少有一项 sub_features[0] 和一项 sub_features[1] 以及一项 sub_features[2] ?
const sub_features = [
['84sa6d8f46s8d4f6sd6f84', ],
['6776c4e6484f9fcf986bc785','80as6df468as408a46df48',],
];
感谢您的回复
您可以使用集合交集测试一个数组是否包含另一个数组中的任何元素。如果生成的交集
size
大于零,则数组之间至少有一个元素匹配:
new Set(features).intersection(new Set(sub_features[0])).size > 0;
您所要做的就是循环遍历您的
sub_features
数组并检查所有交集是否都至少有一个值。
您可以使用 for 循环来完成此操作,但更短的选项是
Array.every()
。它返回数组中的每个元素是否通过给定的检查,我们将使用的检查是上面的交集测试:
sub_features.every(subfeature => new Set(features).intersection(new Set(subfeature)).size > 0);