javascript 的 map 是支持任意类型键(含对象、symbol 等)且保持插入顺序的键值对结构;通过 set() 添加/更新、get() 获取(严格相等匹配)、has() 判断、delete() 删除,不支持点号访问或 for...in 遍历。

JavaScript 中的 Map 是一种专门用于存储键值对的数据结构,它比普通对象更灵活:允许任意类型(包括对象、函数、Symbol 甚至 null)作为键,并保持插入顺序。使用 set() 存数据、get() 取数据是最基础的操作。
用 set() 添加或更新键值对
set() 方法接收两个参数:第一个是键(key),第二个是值(value)。调用后返回当前 Map 实例,支持链式调用。如果键已存在,会覆盖原值;不存在则新增。
- 键可以是字符串、数字、布尔值、对象、函数、Symbol 等——例如:
map.set({}, 'objKey')合法且不会被转换成字符串 - 重复调用相同键的
set()会更新值,不报错也不合并 - 示例:
const map = new Map();<br> map.set('name', 'Alice');<br> map.set(42, 'answer');<br> map.set({id: 1}, 'user1');<br> map.set(true, 'yes');
用 get() 获取对应键的值
get() 接收一个键作为参数,返回该键对应的值;若键不存在,则返回 undefined(不是抛错)。注意:键必须严格相等(===),所以对象键要小心引用一致性。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 字符串和数字键可直接传入:
map.get('name')→'Alice' - 对象作键时,必须用**同一个引用**才能取到值:
const keyObj = {id: 1};<br> map.set(keyObj, 'user1');<br> map.get(keyObj); // ✅ 正确,返回 'user1'<br> map.get({id: 1}); // ❌ 错误,新对象,返回 undefined
配合 has() 和 delete() 做安全操作
实际开发中,建议先用 has() 判断键是否存在,再用 get();修改前也可用 delete() 清除旧键。
-
map.has('name')返回布尔值,比get() !== undefined更语义清晰 -
map.delete('name')删除键值对,返回true(成功)或false(不存在) - 链式写法示例:
map.set('count', 1).set('active', true);
常见误区提醒
别把 Map 当普通对象用:不能用点号或方括号语法(如 map.name 或 map['name'])访问;也不能用 for...in 遍历。要用 get()/set(),遍历用 for...of、forEach() 或 entries() 等方法。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










