Map.prototype.delete() 用于移除 Map 中指定键的键值对,接受一个键参数,返回布尔值:true 表示删除成功,false 表示键不存在;使用 SameValueZero 比较规则,支持 0 与 -0 相等、NaN 自匹配、对象键需同一引用。

Map.prototype.delete() 用于从 Map 对象中移除指定键(key)对应的键值对。它只接受一个参数 —— 要删除的键,返回布尔值:true 表示删除成功(该键存在并被移除),false 表示失败(该键不存在)。
基本用法和返回值
调用 map.delete(key) 后,不会抛出错误,即使键不存在。务必检查返回值来确认是否真的删掉了数据。
const m = new Map([['a', 1], ['b', 2]]);-
m.delete('a'); // true→ 键 'a' 存在,删除成功 -
m.delete('c'); // false→ 键 'c' 不存在,删除失败 -
m.size; // 1→ 剩余一个键值对
注意键的严格相等性(SameValueZero)
delete() 使用与 Map 内部查找一致的比较规则:SameValueZero 算法。这意味着:
-
0和-0被视为相同键(new Map([[0, 'zero']]).delete(-0) // true) -
NaN可以作为键,并且NaN与自身匹配(new Map([[NaN, 'nan']]).delete(NaN) // true) - 对象键必须是**同一个引用**才匹配;不同对象即使内容相同,也不被视为同一键
常见误用提醒
不要混淆 delete 操作符(用于普通对象)和 Map.prototype.delete() 方法:
立即学习“Java免费学习笔记(深入)”;
const obj = { a: 1 }; delete obj.a; // ✅ 正确(对象属性删除)const map = new Map([['a', 1]]); map.delete('a'); // ✅ 正确(Map 方法)delete map.a; // ❌ 无效,map 不是普通对象,且没有 a 属性
配合 has() 判断再删除(可选但推荐)
虽然 delete() 本身已足够安全,但在需要“先确认再操作”的逻辑中,可搭配 has() 使用:
if (map.has('targetKey')) { map.delete('targetKey'); }- 这种写法更清晰表达意图,适合调试或日志场景
- 但性能上略低于直接
delete(),因为多一次查找


















