2

JavaScript对象本质上是键值对的集合,但是只能用字符串作为键。针对这个问题,es6提出了Map数据结构。
Map类似于对象,但是“键”的范围不限于字符串,各种类型的值都可以当做键。
Object提供的是‘字符串--值’;
Map提供的是‘值--值’;
对于‘键值对的数据结构’,Map比Object更加合适。

对象作为键

clipboard.png

Map可以接受的参数

1、数组可以作为Map的参数。
clipboard.png
2、任何具有Interator接口,且每个成员都是一个双元素数组的数据结构。都可以作为Map的参数。
clipboard.png
3、Map中获取一个不存在的值,会返回undefined
clipboard.png

Map的键

Map的键实际上是和内存地址绑定的,只要内存地址不同,就可以视为两个键。我们扩展别人的库时,如果使用对象作为键名,不用担心自己的属性与原作者的属性同名。
Map的键是复杂类型(即使长得像,也没有指向同一块内存)
clipboard.png

Map的键是简单类型
【1】为数字时
+0和-0代表相同
clipboard.png

【2】为字符创和布尔类型时
true和‘true’是不同的。
clipboard.png

实例属性和操作方法

属性:
size属性 返回Map结构的成员总数
clipboard.png

操作方法
set(key,value) 设置key所对应的键值(采用链式写法)
clipboard.png

get(key) 根据key读取对应键值
clipboard.png

has(key) 某个键是否在Map数据结构中
clipboard.png

delete(key) 删除某键
clipboard.png

clear() 清除所有成员
clipboard.png

遍历方法

1、keys() 返回键名的遍历器
2、values() 返回键值的遍历器
3、entries() 返回键值对的遍历器
4、forEach() 遍历Map的所有成员。
clipboard.png

Map与其他数据结构的转换

1、Map转为数组
最方便的方法是使用扩展运算符(...)
clipboard.png

2、数组转为Map 注意:如果不是[[]]会出错
clipboard.png

3、Map转为对象
Map转为对象的前提是:Map的所有键都是字符串,才可以转为对象。
clipboard.png

4、对象转为Map
clipboard.png

5、Map转为JSON
【1】Map键名是字符串,可以选择转为对象JSON。(先转为对象,在转为json)
clipboard.png

【2】Map键名有非字符串,可以选择转为数组JSON。
clipboard.png

6、JSON转为Map
【1】所有键名都是字符串(先将对象转为Map)
clipboard.png

【2】整个JSON就是一个数组
clipboard.png


幸福璐
70 声望12 粉丝

余生漫长,莫要慌张。


« 上一篇
Set数据结构
下一篇 »
WeakSet和WeakMap

引用和评论

0 条评论