📅  最后修改于: 2023-12-03 15:16:15.348000             🧑  作者: Mango
在 JavaScript 中,有时我们需要获取两个数组的交集,即它们共有的元素。下面将介绍几种方法来实现这个目标。
使用双重循环遍历第一个数组并逐一比较是否在第二个数组中存在,如果存在则将其添加到结果数组中。时间复杂度为 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]
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]
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 新增的语言特性,具有更高效的性能。