js数组交集

在JavaScript中,数组是一种常用的数据结构,我们经常需要对数组进行一些操作,比如找到两个数组的交集。数组的交集指的是两个数组中都包含的元素的集合。本文将详细介绍如何在JavaScript中找到两个数组的交集。
方法一:使用循环和includes方法
一种简单的方法是使用循环和includes方法来找到两个数组的交集。具体步骤如下:
- 定义一个空数组来保存交集结果
- 遍历一个数组中的每一个元素,使用includes方法判断该元素是否也存在于另一个数组中
- 如果存在,则将该元素加入到交集结果数组中
下面是具体的代码实现:
function intersect(arr1, arr2) {
let result = [];
for(let i=0; i<arr1.length; i++) {
if(arr2.includes(arr1[i])) {
result.push(arr1[i]);
}
}
return result;
}
let array1 = [1, 2, 3, 4, 5];
let array2 = [3, 4, 5, 6, 7];
console.log(intersect(array1, array2)); // [3, 4, 5]
在上面的代码中,我们定义了一个intersect函数来找到两个数组的交集。我们传入两个数组array1和array2,然后调用intersect函数,得到交集结果[3, 4, 5]。
方法二:使用filter和includes方法
另一种方法是使用filter和includes方法来找到两个数组的交集。具体步骤如下:
- 使用filter方法遍历一个数组,将只有存在于另一个数组中的元素保留下来
- 使用includes方法判断一个元素是否存在于另一个数组中
下面是具体的代码实现:
function intersect(arr1, arr2) {
return arr1.filter(item => arr2.includes(item));
}
let array1 = [1, 2, 3, 4, 5];
let array2 = [3, 4, 5, 6, 7];
console.log(intersect(array1, array2)); // [3, 4, 5]
在上面的代码中,我们直接使用filter方法一行代码实现了找到两个数组的交集的功能。同样,我们传入数组array1和array2,然后调用intersect函数,得到交集结果[3, 4, 5]。
方法三:使用Set对象
除了上面的方法,还可以使用ES6新增的Set对象来找到两个数组的交集。具体步骤如下:
- 将一个数组转换成Set对象
- 使用filter方法筛选出存在于另一个Set对象中的元素
下面是具体的代码实现:
function intersect(arr1, arr2) {
let set1 = new Set(arr1);
let set2 = new Set(arr2);
return arr1.filter(item => set2.has(item));
}
let array1 = [1, 2, 3, 4, 5];
let array2 = [3, 4, 5, 6, 7];
console.log(intersect(array1, array2)); // [3, 4, 5]
在上面的代码中,我们使用Set对象来将数组转换成集合,然后通过has方法来判断一个元素是否存在于另一个集合中。最后得到的交集结果仍然是[3, 4, 5]。
小结
本文介绍了三种在JavaScript中找到两个数组交集的方法,分别是使用循环和includes方法、使用filter和includes方法以及使用Set对象。读者可以根据自己的喜好选择其中一种方法来实现。
极客笔记