JavaScript的对象(object),本质是上键值对的集合,但是传统上只能用字符串当做键值对。
为了解决这个问题,ES6提供了map数据结构。
那么这个map数据结构和普通的键值集合有什么不同之处呢?:
这个键的范围不限于字符串,各种类型的值(包括对象)都可以当做键。也就是说object结构提供了(字符串-值)的对应,map结构实现;
ES6中的map类型时一种储存着许多键值对的有序列表,其中的键名和对应的值支持所有数据类型。数字5与字符串‘5’会被判定为两种类型,可以分别作为两种独立的键出现在程序中。
Map中的方法:
1.set()
给map添加数据,返回添加后的map(给已存在的键赋值后会覆盖掉之前的值)
2. get()
获取某个key的值,返回key对应的值,没有则返回undefined
3.has()
检测是否存在某个key,返回布尔值
4.delete()
删除某个key及其对应的value,返回布尔值,成功删除则为true
5.clear()
清除所有的值,返回undefined
Map也有自己特殊的遍历方式:
一般我们是采用for in 之类的循环,但是在Map中直接循环一个对象,是循环不出来的,
所以我们要用for of循环,for of主要是用来循环Map迭代器的一种遍历方式;
MapIterator是Map的迭代器👇
Map遍历的顺序就是当时我们set插入的顺序:
1.keys()
获取map的所有key
2.values()
获取map的所有值
3.entries()
获取map的所有成员(也就是获取全部成员的key和值)
利用数组的解构赋值快速得到key和value: