数组交并差和去重
1、数组去重
//普通方法
function uniqueArr(arr){
let result=arr.filter((item,index,arrs)=>{
return arrs.indexOf(item)==index
})
return result;
}
function uniqueArr2(arr) {
let obj = {};
return arr.filter(item => {
if (!obj[item]) {
obj[item] = true
return true
}
})
}
function uniqueArr3(arr) {
let result = [];
arr.forEach(item => {
if (result.indexOf(item) == -1) {
result.push(item);
}
})
return result ;
}
function uniqueArr4(arr) {
let result = [];
return arr.filter(item => {
if (result.indexOf(item) == -1) {
result.push(item);
return true
}
})
//ES6 Set
function uniqueArr(arr){
return [...new Set(arr)]
}
let newArr=uniqueArr([1,2,1,1,2,3]);//[1, 2, 3]
2、数组交集
//普通方法
function intersectArr(arr1,arr2){
return arr2.filter((item2,index)=>{
let flag=false;
arr1.forEach((item1,index)=>{
if(item1==item2)flag=true;
});
return flag;
})
}
//ES6 Set
function intersectArr(arr1,arr2){
return arr1.filter((item)=>new Set(arr2).has(item));
}
intersectArr([1, 2, 4],[2,4,5])//[2,4]
3、数组并集
//普通方法
function unionArr(arr1,arr2){
const newArr=arr1.concat(arr2);
return newArr.filter((item,index,arrs)=>arrs.indexOf(item)==index);
}
//ES6 Set
function unionArr(arr1,arr2){
return new Set([...arr1,...arr2]);
}
unionArr([1, 2, 4],[2,4,5])//[1, 2, 4, 5]
4、数组差集
//普通方法
function diffArr(arr1,arr2){
return arr1.filter((item1)=>{
return arr2.every((item2)=>{
return item1!=item2
})
});
}
//ES6 Set
function diffArr(arr1,arr2){
return arr1.filter(item=>!new Set(arr2).has(item));
}
let arr1 = [1, 2, 4]
let arr2 = [2,4,5]
diffArr(arr1,arr2)//arr1-arr2 [1]
diffArr(arr2,arr1)//arr2-arr1 [5]
作者:黄哈哈。
原文链接:https://www.cnblogs.com/jiajia-hjj/p/16024121.html
本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正。