Set
2022-07-16 本文已影响0人
5cc9c8608284
Set
是ES6提供的新的数据结构,类似数组,但组成成员的值都是唯一的,集合实现了iteratot接口,
所以可以使用扩展运算符和for of进行遍历集合的属性和方法
属性:
1.size
:返回集合的元素个数
2.add
:增加一个新元素,返回当前集合
3.delete
:删除元素,返回boolean值
4.has
:检测集合中是否包含某个元素,返回boolean值
5.clear
:清空集合里面的元素
案例1:集合的基本操作
//声明一个Set
let s1 = new Set(["足球", "篮球", "羽毛球", "乒乓球", "足球"]);
//打印集合
console.log(s1);//Set(4) {"足球", "篮球", "羽毛球", "乒乓球"} 过滤掉了重复的元素
//查看集合个数
console.log(s1.size);//4
//添加新的元素
console.log(s1.add('台球'));//Set(5) {"足球", "篮球", "羽毛球", "乒乓球", "台球"}
//删除元素
console.log(s1.delete('足球'));//true:删除成功则返回true
// 检测元素是否存在
console.log(s1.has('足球'));//false
//清空集合
s1.clear()
console.log(s1);//Set(0) {}:空集合
// Set实现了iterator接口,所以可以使用for ... of进行遍历
let s2=new Set(['1122','1111','3333']);
for(let v of s2){
console.log(v);//1122,1111,3333 打印出了集合里面的元素
}
案例2:数组去重
let a1 = [1, 2, 3],
a2 = [2, 3, 4];
let s1 = [...new Set(a1.concat(a2))];
console.log(s1); //[ 1, 2, 3, 4 ]
案例3:求交集
let arr1=[1,2,3,4,5,6,4,3,2,1];
let arr2=[4,5,6,5,6];
let result=[...new Set(arr1)].filter(item=>{
let a2=new Set(arr2);
if(a2.has(item)){
return true
}else{
return false
}
})
console.log(result);//[4, 5, 6]
//简写
let result=[...new Set(arr1)].filter(item=>new Set(arr2).has(item));
案例4:求并集
let arr1=[1,2,3,4,5,6,4,3,2,1];
let arr2=[4,5,6,5,6];
//求并集
let re=[...new Set([...arr1,...arr2])];
console.log(re);
案例5:求差集
差集是交集的逆运算
let arr1=[1,2,3,4,5,6,4,3,2,1];
let arr2=[4,5,6,5,6];
let diff=[...new Set(arr1)].filter(item=>!(new Set(arr2).has(item)))
console.log(diff);