今天在听大神说完hexo中es6 map的用法,觉得有必要好好的记录下来,首先我们先了解一下为什么使用map
plain Object其实就是设计模式中的策略者模式了,然而plain Object的话只能使用字符串作为hash值,实际上在生产应用情境下我们不止希望使用字符串当做键值,而是希望使用值对值的情况来考虑,并且不重复,这样就引入了map结构
talk is cheap,来,举个例子1
2
3
4const m = new Map()
const o = {a: 'b'}
m.set(o, 'content') // 给map赋值使用set
m.get(o) // 返回值为content`
同时,map也可以接受数组作为参数,但是这个数组里的每一项都要以键值对的形式加入1
const m = new Map([['type', 'app'],['name': 'xy']]
在map中提供了这样几个接口,分别为set用来赋值,get用来获取值,has判断是否有对应键值,delete用来删除键,clear用来清空
注意只有对同一个对象的引用,Map 结构才将其视为同一个键。这一点要非常小心。1
2
3const map = new Map()
map.set(['a'], 555)
map.get(['a']) // undefined
那么如何遍历一个map呢1
2for (let key of map.keys()) //遍历得到key值
for (let [key, value] of map.entries()) //遍历得到键值对
或者使用扩展运算符也ok1
2[...map.entries()]
[...map]
上面二者得到一样的结果