ES6-Set()集合

ES6 - Set()集合

Set()的介绍属性及方法

ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法:

  1. size 返回集合的元素个数
  2. add 增加一个新元素,返回当前集合
  3. delete 删除元素,返回 boolean 值
  4. has 检测集合中是否包含某个元素,返回 boolean 值
  5. 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 ]
posted @ 2022-06-07 20:21  秋弦  阅读(73)  评论(0编辑  收藏  举报