(ES6)用Set实现数组去重、交集、并集、差集

143 阅读1分钟

两个模拟数组

let arr = [3,4,5,5,6,6,7,8];
let arr2 = [1,2,3,3,4,4,5];

去重

let result = [...new Set(arr)];

conlose.log(result);	// [3,4,5,6,7,8]

交集

let result = [...new Set(arr)].filter(item=>{
	let result2 = new Set(arr2);	//这里需要是一个Set对象才能用下一行的has方法
	if(result2.has(item)){
		return true;
	}else{
		return false;
	}
})
console.log(result);	//[3,4,5]

↑ 可简化为

let result = [...new Set(arr)].filter(item => new Set(arr2).has(item)) 

并集

let result = [...new Set([...arr,...arr2])]		//先合并两个数组再去重
console.log(result);	//[3, 4, 5, 6, 7, 8, 1, 2]

差集

差集就相当于是交集的逆运算

let result = [...new Set(arr)].filter(item => !new Set(arr2).has(item));
console.log(result);	//[6,7,8]