集合介绍和API
ES6提供了新的数据结构Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了iterator接口,所以可以使用【扩展运算符】和【for...of...】进行遍历,集合的属性和方法:
- size 返回集合的元素个数
- add 增加一个新元素,返回当前集合
- delete 删除元素,返回boolean值
- has 检测集合中是否包含某个元素,返回boolean值
//声明一个 set
let s = new Set();
let s2 = new Set(['大事','小事','好事','坏事','小事']);
//元素个数
console.log(s2.size);//4
console.log(s2);//set(4)['大事','小事','好事','坏事']
//添加新的元素
s2.add('喜事');
console.log(s2);//set(5)['大事','小事','好事','坏事','喜事']
//删除元素
s2.delete('坏事');
console.log(s2);//set(4)['大事','小事','好事','喜事']
//检测
console.log(s2.has('好事'));//true
//清空
s2.clear();
console.log(s2);//set(0)[]
for(let v of s2){
console.log(v);
}
//'大事'
//'小事'
//'好事'
//'喜事'
集合实践
let arr = [1,2,3,4,5,4,3,2,1];
//1.数组去重
let result = [...new Set(arr)];
console.log(result);//[1,2,3,4,5]
//2.交集
let arr2 = [4,5,6,5,6];
let result = [...new Set(arr)].filiter(item=>{
let s2 = new Set(arr2);//4 5 6
if(s2.has(item)){
return true;
}else{
return false;
}
})
console.log(result);//4,5
//简化
let result = [...new Set(arr)].filiter(item=>new Set(arr2.has(item));
console.log(result);//4,5
//3.并集
let union = [...new Set[...arr,...arr2]];
console.log(union);//1,2,3,4,5,6
//4.差集
let diff = [...new Set(arr)].filiter(item=> !(new Set(arr2.has(item)));
console.log(union);//1,2,3