ES6 Set数据结构
2022-05-06 本文已影响0人
生命里那束光
一、Set 集合
1. 概述:
- ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator接口,所以可以使用『扩展运算符』和『for…of…』进行遍历;
- 集合的属性和方法:
size 返回集合的元素个数;
add 增加一个新元素,返回当前集合;
delete 删除元素,返回 boolean 值;
has 检测集合中是否包含某个元素,返回 boolean 值;
clear 清空集合,返回 undefined;
2. 基本使用:
代码实现:
<script>
//声明一个 set
let s = new Set();
let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);
console.log(s2.size); //元素个数
s2.add('喜事儿'); //添加新的元素
s2.delete('坏事儿'); //删除元素
console.log(s2.has('糟心事')); //检测,返回值true或着false
s2.clear();//清空
console.log(s2);
//遍历数据
for(let v of s2){
console.log(v);
}
</script>
运行结果:
![](https://img.haomeiwen.com/i27828718/9b41b4f874d1a107.png)
二、Set 集合实践
代码实现:
//集合方法的组合使用
<script>
let arr = [1,2,3,4,5,4,3,2,1]; //声明数组1
//1. 数组去重
let result = [...new Set(arr)];
console.log(result);
//2. 交集
let arr2 = [4,5,6,5,6]; //声明数组2
//完整代码,交集操作的原理
let result = [...new Set(arr)].filter(item => { //arr数组去重
let s2 = new Set(arr2);//arr数组去重 4 5 6
if(s2.has(item)){ //通过arr数组元素和s2进行匹配
return true;
}else{
return false;
}
});
//简化后的代码
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(result);
//3. 并集
let union = [...new Set([...arr, ...arr2])]; //扩展运算符连接两个数组
console.log(union);
//4. 差集(1和2的差集,1里面有,2里面没有)
let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
console.log(diff);
</script>
运行结果:
![](https://img.haomeiwen.com/i27828718/f1712ac5c6c73e2d.png)
差集和补集的区别:
![]()