es6学习笔记整理(九)set-map数据结构

2018-03-06  本文已影响9人  尤樊容
Set的用法

set是一种集合;类似数组,不同的是set集合中的元素不能重复
有两种定义方式:
第一种:定义时不加参数

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

第一种:定义时加参数

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

set集合中的元素不能重复的情况如下:

            let list = new Set();
            list.add(1);
            list.add(2);
            list.add(1);
            console.log(list);//Set(2) {1, 2} 不报错,相同的元素加不进去

set重要使用,去重

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

set是不会进行数据类型的隐形转换,如下事例中,字符串2就不等于数值2

            let arr2 = [1,2,3,1,'2'];
            let list2 = new Set(arr2);
            console.log(list2);//Set(4) {1, 2, 3, "2"}

set实例的方法:

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

Set实例的方法和遍历:

            var arr = [1,2,3,4,5];
            let list = new Set(arr);
            for(let key of list.keys()){
                console.log(key);//1 2 3 4 5
            }
            for(let value of list.values()){
                console.log(value);//1 2 3 4 5
            }
            //数组的key和value是一样的。不加values()的情况下,默认values();
            for(let value of list){
                console.log(value);//1 2 3 4 5
            }
            for(let [key,value] of list.entries()){
                console.log(key, value);//1 2 3 4 5
            }
            list.forEach(function (item){
                console.log(item);//1 2 3 4 5
            });
WeakSet的用法

WeakSet和set的区别:

            let weakList = new WeakSet();
            let obg = {};
            weakList.add(obg);
//            weakList.add(2);//这样添加就会报错,因为不是对象
            console.log('weakList', weakList);//weakList WeakSet {{…}}
Map的用法

Map是一个对象,类似Object,有key,value。不同的是Object中的key只能是字符串,而Map的key可以使任意数据类型。
Map和Set的用法十分相似,定义方法也有有两种:
第一种没有参数的:

            let map = new Map();
            let arr = [1,2,3];
            map.set(arr,456);
            console.log(map);//Map(1) {Array(3) => 456}
            console.log(map.get(arr));//456

第二种有参数的:new Map([[key,value],[key,value]])

           let map = new Map([['a',123],['b',456]]);
            console.log(map);//Map(2) {"a" => 123, "b" => 456}

这里需要注意:map添加元素使用的是.set(),获取时使用的是.get();
Map常用的属性值:size delete clear has

             let map = new Map([['a',123],['b',456]]);
             console.log(map);//Map(2) {"a" => 123, "b" => 456}
             console.log(map.has('a'));//true
             console.log(map.size);//2
             console.log(map.delete('a'),map);//true Map(1) {"b" => 456}
             map.clear();
             console.log(map);//Map(0) {}

Map常用的方法:keys(),values(),entries()
和for of和forEach()循环

            let a = [["one",1],["two",2]];
            let map = new Map(a);
            map.forEach(function(value, key, map){ //遍历map
                console.log(key + ":" + value); //one:1,two:2
            });
            for(var key of map.keys()){ //返回key的迭代器
                console.log(key); //one,two
            }
            for(var value of map.values()){ //返回值的迭代器
                console.log(value); //1,2
            }
            for(var [key,value] of map.entries()){ //返回项的迭代器
                console.log(value); //1,2
            }
WeakMap的用法

WeakMap与Map的区别:

            var weakMap = new WeakMap();
            let obj = {};
            weakMap.set(obj, 123);
            console.log(weakMap.get(obj));//123
上一篇 下一篇

猜你喜欢

热点阅读