javascript中map的set()方法用于写入或更新键值对,接收键和值两个参数,返回当前map实例以支持链式调用;键可为任意类型(含对象、nan等),按引用或特殊规则(如nan相等)判断唯一性,重复键自动覆盖值。

JavaScript 中 Map 的 set() 方法用于写入或更新键值对,它接收两个参数:键(key)和值(value),并返回当前 Map 实例,支持链式调用。
基本用法:添加单个键值对
set() 最常用的方式是传入一个键和一个值。键可以是任意类型(包括对象、函数、NaN 甚至其他 Map),这和普通对象的字符串/符号键不同。
例如:
const map = new Map();
map.set('name', 'Alice');
map.set(42, 'answer');
map.set({id: 1}, 'user object');
注意:即使键是对象,Map 会按引用判断是否相等,所以两次用 {id: 1} 创建的对象是不同键。
链式调用:连续设置多个键值对
因为 set() 返回的是自身(this),所以可以链式调用,适合初始化时批量写入:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
const map = new Map()
.set('a', 1)
.set('b', 2)
.set('c', 3);
这样比多次单独调用更简洁,也避免重复写变量名。
覆盖已有键:自动更新值
如果键已存在,set() 不会报错,而是直接替换旧值:
map.set('name', 'Alice');
map.set('name', 'Bob'); // 原来的 'Alice' 被覆盖
console.log(map.get('name')); // 输出 'Bob'
这个行为和对象赋值类似,但 Map 更明确、更安全——不会触发原型链干扰或隐式类型转换问题。
注意事项与常见误区
- 键区分类型和值:`map.set(1, 'num')` 和 `map.set('1', 'str')` 是两个不同的键
- NaN 作为键是有效的,且所有 NaN 被视为同一个键(这是 Map 的特殊设计)
- 不能用点号调用:
map.set('k', 'v')正确,map.k = 'v'无效(Map 不是普通对象) - 若需从数组或对象批量导入,应配合
for...of或forEach,而不是直接展开
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










