Set结构

内容来自于阮一峰老师的《ES6入门》
本文主要是对内容进行梳理,方便自己学习,可随意复制转载

一、特性

类似数组,成员唯一,没有重复的值

二、创建

// 第一种方式
let set = new Set();
[2,3,4,5,6,2].map(s => set.add(x));
for (let i of set) {console.log(i)}
// 2 3 4 5 6
// 第二种方式
let set = new Set([2,3,4,5,6,2]);
for (let i of set) {console.log(i)}
// 2 3 4 5 6

三、属性和方法

1、属性

  • constructor:默认是构造函数
  • size:返回Set实例的成员总数
    2、操作方法
  • add(value) :添加某个值,返回Set结构本身
  • delete(value) :删除某个值,返回布尔值,表示删除是否成功
  • has(value) :是否存在,返回true/false
  • clear(value) :清除所有成员,没有返回值
    3、遍历方法
  • keys():返回一个键名的遍历器
  • values():返回一个键值的遍历器
  • entries():返回一个键值对的遍历器
  • forEach():使用回调函数遍历每个成员
    由于Set结构只有键值,没有键名,所以ke()和value()方法的行为完全一致

四、使用技巧
1、Set结构的实例默认可遍历,其默认遍历起生成函数就是它的values方法
Set.prototype[Symbol.iterator] === Set.prototype.values // true

// 可以直接用for...of循环遍历Set
let set = new Set([1,2,3]);
for (let i of set) {
    console.log(i);
}
// 1 2 3
// 由于扩展运算符(...)内部使用for...of循环,所以也可以用于Set结构
let set = new Set([1,2,3]);
let arr = [...set];     // [1,2,3];
// map和filter也可以用于Set
let set = new Set([1,2,3]);
set = new Set([...set].map(x => x*2));
// 返回Set结构:{2,4,6}

let set2 = new Set([1,2,3,4]);
set2 = new Set([...set].filter(x => x%2 === 0));
// 返回Set结构:{2,4}
// 两种数组去重方法
// 第一种
let arr = Array.from(new Set([1,2,3,3,4,5]));

// 第二种
let set = new Set([1,2,3,3,4,5]);
let arr = [...set];
// 并集
let a = new Set([1,2,3,4]);
let b = new Set([4,5,6,7]);
let union = new Set([...a,...b]);
// Set结构为:{1,2,3,4,5,6,7}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// Set结构为:{4}

// 差集
let difference = new Set([...a2].filter(x => !b2.has(x)));
// Set结构为:{1,2,3}

你可能感兴趣的:(Set结构)