Map数据结构

本文介绍了ES6中新增的Map数据结构,它允许任何类型的值作为键,并提供了丰富的操作方法。文章还探讨了Map与传统JavaScript对象的区别,以及如何在实际开发中应用Map。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值