购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.9 Set和Map数据结构

Set和Map是ES6中非常重要的两个数据结构,本节详细介绍Set和Map的用法。

2.9.1 Map对象

Map对象用于保存键-值对。任何值(对象或者原始值)都可以作为一个键或一个值。

1.Map中的key

Map的key是字符串,如代码示例2-110所示。

代码示例2-110

Map的key可以设置为对象,如代码示例2-111所示。

代码示例2-111

Map的key可以设置为函数,如代码示例2-112所示。

代码示例2-112

key也可以是NaN,如代码示例2-113所示。

代码示例2-113

虽然NaN和任何值,甚至和自己都不相等(NaN!==NaN返回值为true),但是NaN作为Map的键来讲是没有区别的。

2.Map的迭代

对Map进行遍历,下面介绍两种遍历Map的方法。

(1)for…of遍历,如代码示例2-114所示。

代码示例2-114 for…of遍历

(2)forEach()遍历,如代码示例2-115所示。

代码示例2-115 forEach遍历

3.Map对象的操作

Map与Array的转换,如代码示例2-116所示。

代码示例2-116

Map的克隆,如代码示例2-117所示。

代码示例2-117

Map的合并,如代码示例2-118所示。

代码示例2-118

2.9.2 Set对象

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

Set对象的特点如下:

(1)Set对象允许存储任何类型的唯一值,无论是原始值还是对象引用。

(2)Set中的元素只会出现一次,即Set中的元素是唯一的。

(3)NaN和undefined都可以被存储在Set中,NaN之间被视为相同的值(尽管NaN!==NaN)。

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

Set对象的用法,如代码示例2-119所示。

代码示例2-119

Set类型可以和其他类型进行转换,如代码示例2-120所示。

代码示例2-120

利用Set中的元素的唯一性实现数组去重,如代码示例2-121所示。

代码示例2-121

通过Set进行交集、并集、差集计算,如代码示例2-122所示。

代码示例2-122 q0p5Od6ahPv0ZlXYATgpsXp05bJm7p9a31bSiAL+0BfptAHIkGwHwRUMqAvSoThO

点击中间区域
呼出菜单
上一章
目录
下一章
×