特点:类似于数组,但是成员的值是唯一的,绝对不会重复!
本身是一个构造函数,用来生成set数据结构:
可以接受一个数组作为参数,用于初始化
var set = new Set([1,2,3,4,4])
[...set]
//[1,2,3,4]
向babel加入值时不会发生类型转换:
set内部判断两个值是否不同使用的算法类似于精确相等运算符(===)。唯一的例外是NaN等于自身。
实例的属性和方法:
属性:
- Set.prototype.constructor:构造函数,默认就是set函数。
- Set.prototype.size:返回Set实例的成员总数
操作方法:
- add(value):返回set结构本身;
- delete(value):返回一个布尔值;
- has():返回一个布尔值;
- clear():没有返回值;
应用:去除数组的重复元素
//Array.from方法可以将Set结构转为数组
var item = new Set([1,2,3,4,5]);
var array = Array.from([items]);
//去除数组的重复元素
function(){
return Array.from(new Set(array));
}
遍历方法:
- keys():键名
- values():键值
- entries():键值对
- forEach():使用回调函数遍历每个成员
注意:因为Set结构没有键名,只有键值,所以keys方法和values方法的行为完全一致。
可以用for…of循环遍历Set
let set = new Set(['red','green','blue']);
for(let x of set){
console.log(x); //red,green,blue
}
由于扩展运算符(…)内部使用for…of循环,所以也可以用于Set结构:
let set = new Set(['red','green','blue']);
let arr = [...set]; //['red','green','blue']
这就提供了另外一种 去除重复元素 的方法:
let set = new Set([1,2,3,3,4,5,5]);
let arr = [...set]; //['red','green','blue']