跳到主要内容

JavaScript程序执行两个数组间的交集

要理解这个示例,你应该具备以下 JavaScript 编程 主题的知识:

示例 1:使用 Set 执行交集

// 使用 Set 来执行两个数组之间的交集的程序
// 交集包含 array1 中也在 array2 中的元素

function performIntersection(arr1, arr2) {
// 将数组转换为 Set
const setA = new Set(arr1);
const setB = new Set(arr2);

let intersectionResult = [];

for (let i of setB) {
if (setA.has(i)) {
intersectionResult.push(i);
}
}

return intersectionResult;
}

const array1 = [1, 2, 3, 5, 9];
const array2 = [1, 3, 5, 8];

const result = performIntersection(array1, array2);
console.log(result);

输出

[1, 3, 5];

在上述程序中,执行了 array1array2 之间的交集。

  • 数组元素使用 new Set() 构造函数转换为 Set 元素。
  • 使用 for...of 循环遍历第二个 Set 的元素。
  • 使用 has() 方法检查元素是否在第一个 Set 中。
  • 如果元素存在于第一个 Set 中,则使用 push() 方法将该元素添加到 intersectionResult 数组中。

示例 2:使用 filter() 方法执行交集

// 执行两个数组之间交集的程序

function performIntersection(arr1, arr2) {
const intersectionResult = arr1.filter((x) => arr2.indexOf(x) !== -1);

return intersectionResult;
}

const array1 = [1, 2, 3, 5, 9];
const array2 = [1, 3, 5, 8];

const result = performIntersection(array1, array2);
console.log(result);

输出

[1, 3, 5];

在上述程序中,使用 filter() 方法执行了两个数组之间的交集。filter 方法遍历数组,并返回通过给定条件的数组元素。

  • 第一个数组的每个元素都使用 indexOf() 方法与第二个数组进行比较。
  • arr2.indexOf(x) 方法搜索 arr2 并返回 arr1 的第一次出现的位置。如果找不到该值,则返回 -1
  • filter() 方法返回两个数组中都存在的所有元素。

注意: 你也可以使用 includes() 方法来检查数组元素是否同时存在于两个数组中。

const intersectionResult = arr1.filter((x) => arr2.includes(x));