Open goldEli opened 4 years ago
const m = new Map();
m.set('a', 1);
m.set(2, 'hello')
console.log(m.get('a')); // 10
console.log(m.get(2)) // hello
m.set('a', 2) // 覆盖上一次 2
console.log(m.size) // 2
console.log(m.has('2'))
console.log(m.delete('a'))
for(key of m) {
console.log(key)
}
// [2, "hello"]
Map 提供的属性和方法有:
size
set(k,v)
get(K)
has(k)
delete(k)
clear()
遍历
Map.prototype.keys():返回键名的遍历器
Map.prototype.values():返回键值的遍历器
Map.prototype.entries():返回所有成员的遍历器
Map.prototype.forEach():遍历 Map 的所有成员
Map
用于字典对象,key value
的方式存储数据。相较于普通对象 {}
,Map
的 key
可以是各种类型var map = new Map()
var blank = {}
map.set("a", 1)
map.set(-1, 1)
map.set(blank, 1)
console.log(map)
// Map(4) {"a" => 1, -1 => 1, {…} => 1, ƒ => 1}
map.get("a") // 1
map.get(-1) // 1
map.get(blank) // 1
WeakMap
和 Map
区别在于,一个是弱引用,一个是强引用。当 key 为引用类型时,如果该 key 的内存地址被回收,Map中储存的对象不会被销毁,而 WeakMap 会被销毁。
var address = {}
var map = new Map()
map.set(address, 1)
address = null
console.log(map)
var address = {}
var map = new WeakMap()
map.set(address, 1)
address = null
console.log(map)
// WeakMap {}
参见http://es6.ruanyifeng.com/#docs/set-map#Set
其中 Map是一种字典结构,本质上是键值对的集合,键可以是任何js对象,实现了值->值的映射结构,扩展了js的Object结构。
介绍下 Map 和 WeakMap 的用法和区别