利用js判断两个数组的集合关系

该文章提供了一系列JavaScript代码片段,用于判断两个数组之间的关系,包括检查一个数组是否为另一个的子集、判断两个数组是否完全相同、找出它们是否有交集以及是否互不相交。此外,还提供了一个综合示例函数,能确定数组的交集、并集、差集以及它们的关系(子集、父集、相等或相交)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 判断数组b是否为数组a的子集:
const isSubset = b.every(item => a.includes(item));
if (isSubset) {
  console.log('数组b是数组a的子集');
} else {
  console.log('数组b不是数组a的子集');
}
  1. 判断数组a和数组b是否完全相同:
const isSame = a.length === b.length && a.every((item, index) => item === b[index]);
if (isSame) {
  console.log('数组a和数组b完全相同');
} else {
  console.log('数组a和数组b不完全相同');
}
  1. 判断数组a和数组b是否有交集:
const intersection = a.filter(item => b.includes(item));
if (intersection.length > 0) {
  console.log('数组a和数组b有交集');
} else {
  console.log('数组a和数组b没有交集');
}
  1. 判断数组a和数组b是否互不相交:
const disjoint = !a.some(item => b.includes(item));
if (disjoint) {
  console.log('数组a和数组b互不相交');
} else {
  console.log('数组a和数组b存在交集');
}

综合示例:

 compareArr(arr1 = [], arr2 = []) {   
        const setA = new Set(arr1);
        const setB = new Set(arr2);
        const intersection = new Set([...setA].filter(x => setB.has(x))); // 交集
        const union = new Set([...setA, ...setB]); // 并集
        const differenceA = new Set([...setA].filter(x => !setB.has(x))); // a数组中有而b数组中没有的元素
        const differenceB = new Set([...setB].filter(x => !setA.has(x))); // b数组中有而a数组中没有的元素
        if (intersection.size === 0) {
          return 'disjoint'; // a、b不相交
        } else if (intersection.size === setA.size && intersection.size === setB.size) {
          return 'equal';   // a、b相等
        } else if (intersection.size === setA.size) {
          return 'subset';  // a是子集
        } else if (intersection.size === setB.size) {
          return 'superset'; // a是父集
        } else {
          return 'mix';// a、b相交但不包含
        }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值