set:
set本身是一个构造函数,类似于数组,代表的是唯一的值,但要注意两个相同的对象是不会去重的,常用方法有
let set = new Set()
set.add(value); //添加
set.delete(value); //删除
set.has(value); //判断是否存在,返回bool值
set.clear(); //清除全部
// 去除数组的重复成员
[...new Set(array)]
// 去除字符串里面的重复字符。
[...new Set('ababbc')].join('')
Set 结构的实例有四个遍历方法,可以用于遍历成员。
Set.prototype.keys():返回键名的遍历器
Set.prototype.values():返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员
需要特别指出的是,Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用。
weakSet与set类似但有两处不同:
1.weakSet的值只能是对象不能是其他
2.weakSet的值是弱引用
因为weakSet的值都是弱引用所以在其他对象不在引用weakSet的时候垃圾回收机制会自动将其回收该对象所占用的内存,也因此es6规定weakSet不可遍历
map:
js的对象,键值对的集合体,对象的键只能是字符串但map的键不限于任何类型,所以在需要键值对结构时map比对象更合适
使用场景:
不确定键名的类型需要用到map,例如从MongoDB
常用方法:
let map = new Map();
let o = {p:'ww'}
//添加
map.set(键,值);
map.set('www','网址');
//获取有返回对应值,没有返回undefined
map.get(键);
map.get('www');//'网址'
map.get('w');//undefined