一、基本用法与特性
Set本身是一个构造函数,可直接用来生成Set数据结构:
const s = new Set();
可传入数组or伪数组
//传入数组
const set = new Set([1,2,3,4]);
//传入伪数组
let divs = document.querySelectorAll('div');
const set2 = new Set(divs);
①Set结构不会添加重复值
const set = new Set([1,2,3,4,4]);
[...set]; //[1,2,3,4]
②Set结构加入数据时不会发生类型转换:
const set = new Set([1,2,3,4,'4']);
[...set]; //[1,2,3,4,'4']
Set内部判断两个值是否相等使用的方法类似于===,所以4和'4'可以同时添加
二、Set实例的属性和方法
属性:Set.prototype.size:返回Set实例的长度
方法:
①.add(value):添加某个值,并返回Set结构本身
②.delete(value):删除某个值,并返回布尔值,表示删除结果是否成功
③.has(value):返回一个布尔值,表示Set实例是否含有该成员
④clear():消除所有成员,无返回值
Tips:Set可以用来去除数组中的重复元素:
let res = [...new Set(array)];
let res2 = Array.from(new Set(array));
三、遍历操作
Set结构没有键名,只有键值,所以keys()方法和values()方法完全一致。同时Set结构的实例默认可遍历,其默认遍历器生成函数就是它的values方法:
Set.prototype[Symbol.iterator] === Set.prototype.values
这意味着可以省略values方法,直接用for...of循环遍历Set:
for (let x of set){
console.log(x);
}
此外Set结构的实例可以用forEach方法对于每个成员执行操作:
set.forEach((value)=>console.log(value*2));