ES6 新添加的一种集合类型
Set 很多方面像是 Map 的加强版, 因为他们的API和行为基本是一样的
- set的创建
const set = new Set()
- set 创建时的初始化实例
const set = new Set(["val1", "val2"])
, 传入一个可迭代对象, 和 Map 一样 , 或者自定义迭代对象 - Set的API
- add () 添加的方法和 Map 不同, Map 使用 set() , 使用 add 返回的是 Set 实例
- has
- delete : 返回一个布尔值
- clear
- size
- set 的值可以是任何类型
- set 使用 对象 {} 或 其他引用类型的集合 [] , 做值时,添加/修改 对象,数组是可以的,set不会发生改变
- Set 提供一个 迭代器 (Iterator) , 能通过 Values() 和 keys() 方法取得迭代器
SetIterator
- 或者使用
set[Symbol.iterator]
获取 Set的迭代器,set[Symbol.iterator]
方法引用了values()
方法 。
- 或者使用
- Set 可以使用 扩展运算符展开 […set] -> 转为数组
- 可以使用 forEach循环,传入两个参数,用于重写回到内部的 this 值
循环 set 集合时, 字符串原始值 不会被修改
for (let value of set.values()) {value = 'test'}
, 不会修改 set 的值
set能够修改对象属性。 {} / []