📜  javascript 获取两个数组的交集 - Javascript (1)

📅  最后修改于: 2023-12-03 15:16:15.348000             🧑  作者: Mango

JavaScript 获取两个数组的交集

在 JavaScript 中,有时我们需要获取两个数组的交集,即它们共有的元素。下面将介绍几种方法来实现这个目标。

1. 双重循环法

使用双重循环遍历第一个数组并逐一比较是否在第二个数组中存在,如果存在则将其添加到结果数组中。时间复杂度为 O(n^2)。

function intersection(arr1, arr2) {
  const res = [];
  for (let i = 0; i < arr1.length; i++) {
    for (let j = 0; j < arr2.length; j++) {
      if (arr1[i] === arr2[j]) {
        res.push(arr1[i]);
        break;
      }
    }
  }
  return res;
}

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 4, 6, 8];
console.log(intersection(arr1, arr2)); // [2, 4]
2. ES6 Set

ES6 引入了 Set 数据结构,它可以用来存储任何类型的唯一值,它可以快速地实现数组去重和数组的交集等操作。

function intersection(arr1, arr2) {
  const set = new Set(arr1);
  return arr2.filter((item) => set.has(item));
}

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 4, 6, 8];
console.log(intersection(arr1, arr2)); // [2, 4]
3. includes() 方法

ES7 新增了 includes() 方法,可以用来判断数组中是否包含某个元素。

function intersection(arr1, arr2) {
  return arr1.filter((item) => arr2.includes(item));
}

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 4, 6, 8];
console.log(intersection(arr1, arr2)); // [2, 4]

以上是三种方法实现 JavaScript 获取两个数组的交集的介绍。其中,ES6 Set 和 includes() 方法都是利用了 JavaScript 新增的语言特性,具有更高效的性能。