js求两个数组的并集,交集和差集
示例数组
let arr1 = [1, 2, 3, 4, 5, 6, 78, 8];
let arr2 = [1, 2, 4, 5, 777, 98];
1.求解并集
- 在求并集时我选择使用到es6的set来求解。
function bing(){
let arr3=[...arr1,...arr2];
let newarr=new Set(arr3);
return [...newarr];
}
console.log('并集----:'+bing(arr1,arr2));
// 打印的结果:并集:1,2,3,4,5,6,78,8,777,98
2.求解交集
- 方法1:foreach遍历数组1后,数组2使用indexof()方法取出两个数组的相同部分。
function jiao() {
let arr = [];
arr1.forEach((item) => {
if (arr2.indexOf(item) != -1) {
arr.push(item)
}
})
return arr;
}
console.log('交集----:' + jiao(arr1, arr2));
// 打印结果:交集:1,2,4,5
- 方法2:使用filter()遍历方法 (比较简捷)
function jiao() {
let arr = arr1.filter(item => arr2.includes(item));
return arr;
}
console.log('交集----:' + jiao(arr1, arr2));
// 打印结果: 交集----:1,2,4,5
3.求解差集
对于求解差集我选择两种方法来进行求解
- 方法1:分别遍历两个数组求出自己所独有的数据
let newarr = [];
//求出arr1中独有的数据
arr1.forEach(v => {
if (arr2.indexOf(v) == -1) {
newarr.push(v);
}
})
//求出arr1中独有的数据
arr2.forEach(v => {
if (arr1.indexOf(v) == -1) {
newarr.push(v);
}
})
console.log('差集----:' +newarr);
// 打印结果: 差集----:3,6,78,8,777,98
- 方法2:差集=并集去掉与交集重复的部分。
- filter遍历并集取出交集中不存在的数据。
function cha(...one) {
//遍历并集部分
let arr = bing(...one).filter(item => !jiao(...one).includes(item))
return arr;
}
console.log('差集----:' + cha(arr1, arr2));
// 打印结果: 差集----:3,6,78,8,777,98