ES6语法(9)

来源:互联网 发布:it资讯 编辑:程序博客网 时间:2024/06/08 14:16

Set和Map数据结构

一、Set

ES6提供了新的数据结构——Set,它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。

1.Set利用add()添加成员

        {
            let list= new Set();
            list.add(1);
            list.add(2);
        }


2.利用size显示长度

        {
            let list= new Set();
            list.add(1);
            list.add(2);
            console.log(list.size);  //2
        }


3.设置默认值

        {
            let arr = [1,2,3,4,5]
            let list = new Set(arr);
            console.log(list.size);  //5
        }


4.不会有重复的值

        {
            let list = new Set;
            list.add(1);
            list.add(2);
            list.add(1);
            console.log(list);   //只有1,2
        }

作用:去重,但是转换过程中不会做类型转换。

        {
            let arr = [1,2,3,1,2]
            let list = new Set(arr);
            console.log(list);   //1,2,3
        }


        {
            let arr = [1,2,3,1,"2"]
            let list = new Set(arr);
            console.log(list);  //1,2,3,"2"
        }


5.利用has检查是否有某个成员,delete删除成员,clear清空所有成员

        {
            let arr = [1,2,3,4,5]
            let list = new Set(arr);
            console.log(list.has(2));  //true
            list.delete(2)
            console.log(list);   //1,3,4,5
            list.clear();
            console.log(list);  //空
        }


6.Set的key和value值是相同的,所以不用entries也可以遍历。

        {
            let arr = [1,2,3,4,5]
            let list = new Set(arr);
            for(let value of list){   //list后面可加 .entries ,value替换成[key,value]   
                console.log(value);    //1,2,3,4,5
            }
        }


二、WeakSet

WeakSet元素只能是对象,并且是弱引用(地址的引用)。没有clear方法、没有size属性、不能遍历。其他方式相同。

        {
            let weakList = new WeakSet;
            weakList.add({a:"aa"});
            console.log(weakList);  //成功
        }


        {
            let weakList = new WeakSet;
            weakList.add(3);
            console.log(weakList);  //出错
        }



三、Map

类似于对象,也是键值对的集合,但是key不限于字符串,各种类型的值都可以作为key。


1.利用set设置,get读取

        {
            let maplist = new Map;
            let arr = ["abc"];
            maplist.set(arr,123);
            console.log(maplist);  //打印maplist对象
            console.log(maplist.get(arr));  //123
        }


2.传入数组

        {
            let arr=[["a",123],["b",234]];
            let mapEx = new Map(arr);
            console.log(mapEx);
        }


3.获取长度 size

        {
            let arr = [["a",123],["b",234]];
            let mapEx = new Map(arr);
            console.log(mapEx.size);  //2
        }


4.删除 delete

        {
            let arr = [["a",123],["b",234]];
            let mapEx = new Map(arr);
            mapEx.delete("b");
            console.log(mapEx);  //只剩下a
        }


5. 清空 clear

        {
            let arr = [["a",123],["b",234]];
            let mapEx = new Map(arr);
            mapEx.clear();
            console.log(mapEx);  //空
        }


四、WeakMap

key值只能是对象。

没有clear方法、没有size属性、不能遍历。