js 数组至少包含数组 1 中的项目和数组 2 中的 1 项以及

问题描述 投票:0回答:1

我将此数组作为主数组。

features= [
               '6776c2ea484f9fcf986bc607',
               '6776c2fc484f9fcf986bc61b',
               '6776c2f3484f9fcf986bc611',
               '6776c2e0484f9fcf986bc5fd',
               '6776c36e484f9fcf986bc663',
               '6776c378484f9fcf986bc66d',
               '6776c4d7484f9fcf986bc77b'
            ],

我将此数组作为子数组。

 const sub_features = [
         ['6776c2e0484f9fcf6bc5fd', '6776c2d5484f9fcf9865f3'],
         ['84sa6d8f46s8d4f6sd6f84', '80as6df468as408a46df48', '70as4df468as401a46df48'],
         ['6776c4e6484f9fcf986bc785'],
      ];
  • 这很重要 sub_features 数组可能有 1,2,3,4 或更多项。

如何检查 features 数组是否至少有一项 sub_features[0] 和一项 sub_features[1] 以及一项 sub_features[2] ?

  • 这非常重要,sub_features 数组的数量可以像这样改变
const sub_features = [
         ['84sa6d8f46s8d4f6sd6f84', ],
         ['6776c4e6484f9fcf986bc785','80as6df468as408a46df48',],
      ];

感谢您的回复

javascript arrays for-loop conditional-statements
1个回答
0
投票

您可以使用集合交集测试一个数组是否包含另一个数组中的任何元素。如果生成的交集

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);
© www.soinside.com 2019 - 2024. All rights reserved.