ES6之Set (集合)

一:Set 

集合 数据结构 集合是由一种没有重复元素且没有顺序的数组,主要用于数组去重,字符串去重。

ES6提供的Set数据结构类似于数组,且没有重复的值(多用于去重);Set本身是一个构造函数,用于生成Set数据结构与

Set实例的方法分为操作方法、遍历方法

操作方法:

add():添加值,返回Set结构本身

let set = new Set()
set.add(1);
console.log(set);  // Set(1){1}
set.add(1).add(2).add(1)
console.log(set) // Set(2) {1,2}
//注:拓展运算符(...)可以将Set值扩展出来
console.log(...set) // 1  2 
console.lolg([...set])// 【1,2】
//以上可见Set可以将重复元素去掉

delate():删除值,并返回一个boolean 表示是否删除成功

let set = new Set()
set.add(1).add(2); //添加两个值
set.delete(1);  true
console.log(...set) // 2
set.delete(3) // false

has():判断该值是否存在,并返回一个Boolean

let set = new Set()
set.add(1).add(2);
set.has(1); //true
set.has(3); //false

clear():清除所有值。没有返回值

let set = new Set();
set.add(1).add(2);
set.clear
 console.log(set,[...set]); // Set(0){} []

遍历方法:

由于Set只有键值没有键名,也可以说键和值是同一个(键、值相同,可以省略) ,所keys和values返回值相同

//keys遍历键 values遍历值,由于set结构键值相同所以打印的是同一个
let set = new Set()
set.add(1).add(2).add(3);
for( let i of set.keys() ){
    console.log(i)
    }
// 1
//2
//3
for(let i of set.values()) {
  console.log(i)  
}
//打印结果同上
let set = new Set();
set.add('hello').add(world);
for( let i of set.entries() ){
  console.log(i)  
}
//set结构  (2)【“hello”, "hello"】
//         (2)[ "world","world" ]
//打印键值对

forEach()

let set = new Set();
set.add('hello').add('world');
set.forEash( ( key, val ) => {
    console.log(key + '||' + val)
} )  // hello||hello
     // world||world

综合以上代码,每次去Set里添加一个元素都要去使用add()方法 (实在麻烦)

Set可以接受一个数组作为参数

let arr = [ '小红', '小明', '小强', '小明' ];
let set = new Set(arr);
console.log(...set) // 小红 小明 小强 (去重后返回值)

 Set实现并集与交集

let arr = [ 4, 5, 6 ];
let list = [ 5, 6, 7 ];
let setA = new Set(arr);
let setB = new Set(list);
//并集 :集合A 与 集合B 的并集 A U B
let bj= new Set([ ...setA, ...setB ])
console.log(bj)
// 返回Set结构 Set(4) {4,5,6,7}

//交集:集合A 与 集合B 的交集 A ∩ B
//通过filter拿到符合条件的值
let jj = new Set([...setA].filter(val => setB.has(val)))
console.log(jj)
//Set(2) {5,6}

 

posted @ 2020-07-27 03:41  tommy·L  阅读(397)  评论(0编辑  收藏  举报