ES6之Set与Map加深理解

时间:2024-01-20 20:09:33

Set

类似于数组,但是成员的值都是唯一的,没有重复的值,有序。

Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。

用途

数组去重:

[...new Set(array)]

Array.from(new Set(array));

字符串去重:

[...new Set('ababbc')].join('')
// "abc"

Map

“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键

任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构(详见《Iterator》一章)都可以当作Map构造函数的参数

只有对同一个对象的引用,Map 结构才将其视为同一个键。这一点要非常小心。

Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(*)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。

Map 的遍历顺序就是插入顺序,对象无序