1、set、map是ES6新增的数据结构,他们都有1个属性4个方法。
    2、set结构的特点就是里面的内容不能一样。如果通过构造器那么传递是数据。例如:let a=new Set([1,3,54]);

    1. let a=new Set();
    2. let b=[null,undefined,NaN,null,NaN,1,'1',1.0,-0,0];
    3. b.forEach(item=>{
    4. a.add(item);
    5. })
    6. a //Set{null,undefined,NaN,1,'1',0}

    在set结构中,认为NaN跟NaN是相等的。
    3、set跟map有一个属性size获取内容长度,有三个方法相同,分别是has、delete、clear。
    has判断结构中是否有某一项,
    delete删除某一项,如果删除成功则返回true,删除失败返回false。
    clear清空结构。
    set添加项的方法为add
    map添加项的方法为set,获取为get。
    4、set、map结构还有相同的keys()、values()方法、entries()方法。
    set的key跟value一样,所以set的keys()、values()返回结果一样都是相同的迭代器对象。
    SET示例如下:

    1. let a=new Set([1,3,45]);
    2. let b=new Set([4,5,6]);
    3. let c=a.keys(); //SetIterator {1, 3, 45}
    4. let d=a.values();//SetIterator {1, 3, 45}
    5. let e=a.entries();//SetIterator {[1, 1], [3, 3], [45, 45]}

    MAP示例如下:

    1. let b=[]
    2. let a=new Map([[1,45],[3,'张三'],[undefined,NaN],[b,111]]);
    3. let c=a.keys();//MapIterator {1, 3, undefined, []}
    4. let d=a.values();//MapIterator {45, "张三", NaN, 111}
    5. let e=a.entries();//MapIterator {[1, 45], [3, "张三"], [undefined, NaN], [Array[0], 111]}

    5、iterator接口可以用for of遍历。
    map结构可以用forEach遍历

    1. let a=new Set([1,3,45]);
    2. let b=new Map([[1,3,45],[123,'dfdf']]);
    3. b.forEach((item,index)=>{
    4. console.log(index,item)//1 3,123 "dfdf"
    5. });
    6. let c=a.keys();
    7. for(let i of c){
    8. console.log(i);//1 3 45
    9. }