Es6的Set是一个拥有唯一值的集合,而Map是一个拥有唯一键的集合,他们的唯一性是通过Object.is这个方法来进行比较的(Object.is可以参考MDN)。
Set可以使用扩展运算符来将其变成一个数组,一般进行数组去重的时候也可以使用Set来进行。
Map的结构是一个二维数组,拥有独立的键值对,在不使用ts的情况下,可以使用Map来代替ts中的enum实现枚举,看起来比较清爽,不用那么多的if else。
Weak Set、Set还有Weak Map、Map之间的区别主要有:
1、Weak系的都是弱引用,垃圾回收机制可以进行回收,释放内存,而普通的Set、Map不可以,他们都是强引用。在垃圾回收自动运行的时候,如果遇到若引用的标记被清除来,就会回收,如果是强引用则不会。
2、Weak系的键都必须是对象,如果不是会报错。