Skip to content

字典(Map)结构

常用 API

shell
操作     方法                  时间复杂度   说明
新增     map.set(key, value)    O(1)     键可设为任意类型(函数 / 对象 / DOM 元素等)
修改     map.set(key, value)    O(1)     键可设为任意类型(函数 / 对象 / DOM 元素等)
访问     map.get(key)           O(1)     获取键对应的值(无则返回 undefined)
删除     map.delete(key)        O(1)     删除指定键
判断存在  map.has(key)           O(1)     判断键是否存在
遍历     map.forEach()          O(n)     遍历键值对(按插入顺序)
长度     map.size               O(1)     直接获取键值对数量

字典与对象对比

shell
特性       Map              Object
键类型     任意类型           字符串 / Symbol
顺序      插入顺序           ES6 后插入顺序(部分场景)
长度获取   size属性(O (1))  Object.keys(obj).length(O(n))
遍历      直接遍历键值对      需手动处理原型链
频繁读写   性能更好           性能略差

适用场景

非字符串键映射:const domMap = new Map(); domMap.set(document.body, { width: 100 })(用 DOM 元素作键)

频繁增删遍历:const cache = new Map()(缓存数据,频繁读写)

有序键值对:const sortedMap = new Map([['a', 1], ['b', 2]])(按插入顺序遍历)