JavaScript 中的 Map 是专门用于存储键值对的集合类型,比普通对象更灵活可靠,支持任意类型键、保持插入顺序、提供 set/get/has/delete 等明确方法及 size 属性和多种遍历方式。

JavaScript 中的 Map 是专门用于存储键值对的集合类型,比普通对象更灵活、更可靠,尤其适合键不是字符串或需要保持插入顺序的场景。
创建和初始化 Map
用 new Map() 创建空实例,也可传入一个可迭代对象(如数组)进行初始化:
-
const map = new Map();—— 创建空 Map -
const map = new Map([['a', 1], ['b', 2]]);—— 初始化两个键值对 - 支持任意类型作键:数字、布尔、对象、函数甚至
null和undefined
常用操作方法
Map 提供明确的方法管理数据,不依赖属性访问:
-
map.set(key, value)—— 添加或更新键值对,返回 Map 自身(可链式调用) -
map.get(key)—— 获取对应值,键不存在时返回undefined -
map.has(key)—— 判断键是否存在,返回布尔值 -
map.delete(key)—— 删除指定键,成功返回true -
map.clear()—— 清空所有键值对
遍历和获取信息
Map 天然支持多种遍历方式,且按插入顺序返回:
立即学习“Java免费学习笔记(深入)”;
-
map.size—— 返回键值对数量(是属性,不是方法) -
for (const [key, value] of map)—— 解构遍历每一对 -
map.keys()/map.values()/map.entries()—— 分别返回键、值、键值对的迭代器 -
[...map.keys()]可转为数组,方便进一步处理
Map 与普通对象的区别
避免误用对象模拟键值对时的常见陷阱:
- 对象的键只能是字符串或 Symbol;Map 键可以是任意类型
- 对象不保证属性顺序(尤其数字键),Map 始终按插入顺序迭代
- 对象需手动检查
hasOwnProperty防止原型污染;Map 的has()安全直接 - 对象无法直接获取键值对数量(
Object.keys(obj).length不准确);Map 有size属性


















