案例
求数组 A [1,2,3,4] 和数组 B [2,3,5,6] 并集、交集和差集。
思路分析
- 求并集的思路就是对合并的两个数组去重,去重最简单的办法就是使用 Set 集合;
- 求交集的思路就是轮询一个数组在另一个数组中是否出现,可通过 indexOf 或者 incloud 判断;
- 求差集的思路是取并集中的非交集。
代码实现
var arr1 = [1,2,3,4];
var arr2 = [3,4,5,6];
//求并集
function union(...arg) {
var arr = [...arg[0],...arg[1]];
var newArr = Array.from(new Set(arr));
return newArr;
}
//求交集
function intersection(...arg) {
var arr = arg[0].filter((item)=>arg[1].includes(item));
return arr;
}
//求差集
function difference(...arg) {
var arr = union(...arg).filter((item)=>!intersection(...arg).includes(item));
return arr;
}
console.log(union(arr1,arr2));//[1,2,3,4,5,6]
console.log(intersection(arr1,arr2));//[3,4]
console.log(difference(arr1,arr2));//[1,2,5,6]