分别写出数组的交集、并集、差集、补集这四个方法

在前端开发中,处理数组交集、并集、差集、补集这些操作是很常见的。以下是用 JavaScript 实现的这四个方法:

  1. 交集(Intersection):返回两个数组中共同存在的元素。
function intersection(arr1, arr2) {
  const set1 = new Set(arr1);
  const set2 = new Set(arr2);
  const result = [];

  for (const item of set1) {
    if (set2.has(item)) {
      result.push(item);
    }
  }

  return result;
}
  1. 并集(Union):返回两个数组中所有不重复的元素。
function union(arr1, arr2) {
  const set1 = new Set(arr1);
  const set2 = new Set(arr2);

  for (const item of set2) {
    set1.add(item);
  }

  return Array.from(set1);
}
  1. 差集(Difference):返回在第一个数组中存在,但在第二个数组中不存在的元素。
function difference(arr1, arr2) {
  const set1 = new Set(arr1);
  const set2 = new Set(arr2);
  const result = [];

  for (const item of set1) {
    if (!set2.has(item)) {
      result.push(item);
    }
  }

  return result;
}
  1. 补集(Complement):通常指的是相对于某个全集的补集。在数组操作中,可以认为补集是相对于并集的差集。即,先求出两个数组的并集,然后分别求每个数组相对于并集的差集。以下示例展示如何求第一个数组相对于两个数组并集的补集。
function complement(arr1, arr2) {
  const unionArr = union(arr1, arr2);
  return difference(unionArr, arr1); // 这里求的是 arr1 相对于并集的补集,也可以根据需要求 arr2 的补集
}

注意:补集的定义可能因上下文而异。在上面的示例中,complement 函数求的是第一个数组相对于两个数组并集的补集。如果你需要求第二个数组相对于并集的补集,可以稍微修改该函数。

这些函数都使用了 JavaScript 的 Set 对象来处理数组,因为 Set 对象可以自动去重,并且提供了高效的成员检查方法(has)。

posted @ 2025-01-16 06:18  王铁柱6  阅读(103)  评论(0)    收藏  举报