ES6-Set()集合
ES6 - Set()集合
Set()的介绍属性及方法
ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法:
- size 返回集合的元素个数
- add 增加一个新元素,返回当前集合
- delete 删除元素,返回 boolean 值
- has 检测集合中是否包含某个元素,返回 boolean 值
- clear 清空集合,返回 undefined
1.可以利用Set() 成员值的唯一性实现数组去重
// 声明一个Set()
let s = new Set();
let s2 = new Set(['李白','典韦','露娜','李白']);
console.log(s2);// Set(3) {'李白', '典韦', '露娜'}
2.返回集合元素的个数
let s = new Set();
let s2 = new Set(['李白','典韦','露娜','李白']);
console.log(s2.size); //3 注意:返回的是去重之后的个数
3.添加一个新元素
let s2 = new Set(['李白','典韦','露娜','李白']);
// 添加新的元素 add
s2.add('程咬金');
console.log(s2); //Set(4) {'李白', '典韦', '露娜', '程咬金'}
4.删除元素
let s2 = new Set(['李白','典韦','露娜','李白']);
s2.delete('李白');
console.log(s2); //Set(2) {'典韦', '露娜'}
5.has 检测集合中是否包含某个元素,返回 boolean 值
存在返回true,不存在返回false
let s2 = new Set(['李白','典韦','露娜','李白']);
console.log(s2.has('李白')); //true
6.clear 清空集合
let s2 = new Set(['李白','典韦','露娜','李白']);
s2.clear();
console.log(s2); //Set(0) {size: 0}
注意:Set()集合提供了一个iterator接口,可以使用fo-of进行遍历
let s2 = new Set(['李白','典韦','露娜','李白']);
for (let key of s2) {
console.log(key); // 李白 典韦 露娜
}
Set()集合的应用
1.实现数组的去重
let arr = [1,2,3,4,1,2,5,6,8,8];
// 1.实现数组的去重
let res = [...new Set(arr)];
console.log(res); // [1,2,3,4,5,6,8]
2.求两个数组的交集
// 写法一
let arr = [1,2,3,4,1,2,5,6,8,8];
let arr2 = [4,5,6,5,6];
let res2 = [...new Set(arr)].filter(item=>{
let s2 = new Set(arr2);
if(s2.has(item)){
return true;
}else{
return false;
}
});
console.log(res2); // [ 4, 5, 6 ]
//写法二
let res3 = [...new Set(arr)].filter(item=>new Set(arr2).has(item))
console.log(res3); // [ 4, 5, 6 ]
3.求两个数组的并集
let arr = [1,2,3,4,1,2,5,6,8,8];
let arr2 = [4,5,6,5,6];
let res4 = [...new Set([...arr, ...arr2])];
console.log(res4);//[1, 2, 3, 4,5, 6, 8]
4.求两个数组的差集
// 4.差集 在数组arr里面存在,在arr2里面不存在的数值
let arr = [1,2,3,4,1,2,5,6,8,8];
let arr2 = [4,5,6,5,6];
let res5 = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
console.log(res5); // [ 1, 2, 3, 8 ]