一、Map对象
一、Map理论
概念:Map对象保存键值对。任何值(对象或者原始值)都可以作为一个键或一个值。
语法:new Map([iterable])与Set极其相似
参数:参数只需是可迭代的集合即可,其元素为键值对,例如:[[1,'one'],[2,'two']],而null会被当做undefined。
遍历:Map对象根据对象中的插入顺序来进行forof循环迭代,最后会返回一个形式为[key,value]的数组
二、Map应用
1,创建空的Map
对象Map创建直接new上即可,且当参数为空或者null时都是创建的空Map

根据语法可知,Map对象中放的都是可迭代的键值对数据;数据要以数组形式存储,键值对中间要用逗号隔开,且键值或者键名都需要用引号引起来

1)map.get()
获取键对应的值,如果不存在就返回undefined

2)map.set()
设置Map对象中键的值。返回该Map对象。

设置数据导致的内存泄漏问题,明明将数据置为null啦!在memory中,让其生成快照去查找该数据,你会发现数据仍被保留到了内存中。

二、WeakMap对象
一、WeakMap理论
概念:WeakMap对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的;与Map相比较,Map中键和值都是任意的
语法:new WeakMap([iterable])
参数:参数是一个数组(二元数组)或者其他可迭代的且其元素是键值对的对象。每个键值对会被加到新的 WeakMap 里。null 会被当做 undefined。
二、WeakMap应用
WeakMap对象有效的解决了Map对象中设置数据造成的内存泄漏问题。

三、Set对象
一、Set理论
概念:Set对象里面允许存储任何类型的唯一值(没有重复数据),无论是原始值还是对象引用。
语法:new Set([iterable]);里面存放可迭代数据
参数:如果传递一个可迭代对象,它的所有元素将不重复地被添加到新的 Set中。如果不指定此参数或其值为null,则新的Set为空。
返回值:创建的一个新的Set对象。
二、Set应用
1,创建空的Set
对象Set创建直接new上即可,且当参数为空或者null时都是创建的空Set

2,创建有内容的Set
根据语法可知,Set对象中放的都是可迭代的数据,且全部由[]包起来的。

Set对象中放任何类型的数据。

Set对象中放任何类型的数据的唯一值,无重复值。


Set属于可迭代的,所以直接利用数组相关方法foEach,再要么就直接利用Set对象方法entries与for of配合。
