Map是JavaScript ES6中新增的资料结构 ,类似於object ,不过Map还是跟object有着以下的差异:
let map = new Map()
//也可以在宣告的时候就赋值,传入[key , value]
let map = new Map([
["amber", 18],
["shane", 33],
]);
新增key-value pairs(键值对),如果key已经存在,旧的值会被新的值覆盖
//第一个值传入key 第二个值传入value
map.set('tom', 28);
map.set('jason', 27);
因为set会回传map的本身,所以可以使用chaining(链)的写法
let map = new Map()
.set('jay', 13)
.set('ban', 23)
.set('luna', 49);
用key来获取value,如果没有这个key会回传undefined
map.get('tom'); //get 28
获取Map的长度
map.size // get 2
检查Map是否拥有该key,会回传boolean值
map.has('tom') // true or false
删除Map的某个key,如果删除成功会回传true,失败则是false
map.delete('tom') // true or false
清除Map所有的键值对,不会回传值
map.clear('tom')
let map = new Map([
["amber", 18],
["shane", 33],
]);
map.keys() // {'amber', 'shane'}
map.values() // {18, 33}
map.entires() // {"amber" => 18, "shane" => 33}
可以搭配for of或forEach来遍历map
//for of
for(let [key, value] of map){
console.log('key', key, 'value', value)
}
//forEach
map.forEach((value, key) => {
console.log('key', key, 'value', value)
})
//....扩展运算子
[...map.keys()] // ["amber", "shane"]
WeakeMap结构类似於Map,只接受object作为key,不接受其它类型的值,不支援迭代的方法ex. keys()、values()、entries()等等,WeakMap的key为弱引用,当作为key的object在其它地方没有被引用的时候,就会被js垃圾回收机制自动回收,整个键值对都会消失。
let weakMap = new WeakMap()
weakMap.set('mark', 19)
//Invalid value used as weak map key
let obj = {name: 'mark'}
weakMap.set(obj, 5)
//correct
参考资料:MDN
<<: Day 05 Line Massaging API- 打造自己的 Chatbot
封装(Encapsulation)和协定的资料单位(PDU) 大家普遍认为(特别是在Cisco/CC...
很多时候,刚程序开启後有可能因为使用者操作的因素就让正在跑的程序被盖住了。尤其是在使用键盘滑鼠精灵控...
How to Talk to Users: Startup Ideas, Building Prod...
在铁人赛中,最後一个要来介绍的章节是 Class!我觉得这是所有章节中最难懂、最抽象的部分,真的是需...
支线任务:共笔部落格切版 礼拜一的时候终於把留言版做完了,接着是弄共笔部落格的文章列表样板,花了一两...