es6学习——Set和Map

es6学习——Set和Map

大纲
一、Set–替代数组
二、Map–替代对象
三、WeakSet–成员只能是对象的Set;WeakMap–成员只能是对象的Map
四、总结
一、Set

类似于Array的数据结构,但是它的成员是唯一的。(这里注意引用类型储存的是地址)

使用方法:

    {
        let set1 = new Set();
        let set2 = new Set([1,2,3,3,3]);
    }

打印出来是这个样子的:

这里写图片描述
这里体现Set的一大作用:数组去重

API例举

:set1.add(value);

:set1.delete(value);

:set1.has(value);

清空所有:set1.clear();

遍历操作:keys()、values()、entries()、forEach()等

成员数量:size()

与数组的相互转换

前面代码实例提到数组转为Set,Set转为数组的方式如下:

let arr = Array.from(set1)
二、Map

类似于对象的数据结构,更像PHP中的键值对,key不再受限于字符串类型

使用方法:

let map1 = new Map();
        let map2 = new Map([
            ['name','小明'],
            [0,true]
        ]);
        console.log(map1, map2);

打印结果:

这里写图片描述

API例举

增、改:set(key,value)

其余与Set差不多

与其他数据类型的转换

1、Map=>Array:…展开运算符;Array=>Map:将数组当作参数传入Map构造函数

2、Map=>Object:遍历Map,添加入对象中(键名必须都是字符串);Object=>Map:遍历对象,按上面实例代码向Map构造函数中添加数组

3、Map=>Json:看键名是否有字符串,分别转为对象json和数组json(可以查找相应API);Json=>Map:正常对象Json转Map即可

三、WeakSet–成员只能是对象的Set;WeakMap–成员只能是对象的Map

加了Weak的区别

顾名思义,弱化版Set和Map,一个是其成员只能是对象类型(WeakMap是键名必须为对象);另一个,Weak中的对象是弱引用,即如果外部没有使用该对象,只有Weak内部使用的对象会被垃圾回收机制清除,所以在使用时先在外部定义要使用的对象

另外在API方面,Weak没有遍历方法,也没有size()方法

四、总结

Set和Map两种数据类型使用比较多,在es6的项目中尽量用这两种数据类型替代Array和Object,可以参考这两种数据结构的API,在处理数据时会比传统的Array和Object高效很多;相信大家在处理后台传来的数据时深有体会,我个人觉得map提供的类似PHP数组键值对的数据结构明显解决了我的痛点

另外WeakSet和WeakMap两种数据结构也有适用的场景,本文主要是我自己学习Map和Set的一些心得,WeakSet和WeakMap了解不是很深入,有兴趣请参阅其他人的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值