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];
在上述程序中,执行了 array1
和 array2
之间的交集。
- 数组元素使用
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));