set的用法
Set
定义:类似于数组的数据结构,成员值都是唯一且没有重复的值 声明:const set = new Set(arr) 入参:具有Iterator接口的数据结构 属性
constructor:构造函数,返回Set size:返回实例成员总数
方法
add():添加值,返回实例
const setArr = new Set(["哈哈", "呵呵", "呜呜"]);
setArr.add("啦啦");
Set(4) {"哈哈", "呵呵", "呜呜", "啦啦"}
delete():删除值,返回布尔值
const setArr1 = new Set(["哈哈", "呵呵", "呜呜"]);
setArr1.delete("呜呜")
true
has():检查值,返回布尔值
const setArr2 = new Set(["哈哈", "呵呵", "呜呜"]);
setArr2.has("呜呜")
true
clear():清除所有成员
keys():返回以属性值为遍历器的对象
values():返回以属性值为遍历器的对象
entries():返回以属性值和属性值为遍历器的对象
forEach():使用回调函数遍历每个成员
应用场景
去重字符串:[...new Set(str)].join("") 去重数组:[...new Set(arr)]或Array.from(new Set(arr)) 集合数组
声明:const a = new Set(arr1)、const b = new Set(arr2) 并集:new Set([...a, ...b]) 交集:new Set([...a].filter(v => b.has(v)))
var intersect = new Set([...new Set(["哈哈", "呵呵", "呜呜"])].filter(x => new Set(["呜呜", "呵呵", "嘻嘻"]).has(x)));console.log(intersect);
差集:new Set([...a].filter(v => !b.has(v)))
映射集合
声明:let set = new Set(arr) 映射:set = new Set([...set].map(v => v * 2))或set = new Set(Array.from(set, v => v * 2))