delete() 删除单个键并返回布尔值,clear() 清空全部键值对且不返回值;前者按引用相等匹配对象键,后者更高效,map 清空后仍可复用。

JavaScript 中 Map 的 delete() 和 clear() 方法是清理键值对的两个核心方式,用法简单但有关键区别:前者删单个键,后者清空全部。
delete():按 key 精准删除一个条目
delete(key) 接收一个参数(即要删除的键),返回布尔值:true 表示删除成功,false 表示该 key 不存在。它不会报错,即使 key 不存在也安全。
例如:
const map = new Map([['a', 1], ['b', 2], ['c', 3]]);<br>map.delete('b'); // true<br>console.log(map.size); // 2<br>map.delete('x'); // false(key 不存在)
注意:delete() 只认“引用相等”——如果 key 是对象,必须传入**同一个对象引用**才能删掉:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const objKey = { id: 1 };<br>const map = new Map([[objKey, 'data']]);<br>map.delete({ id: 1 }); // false(新对象,引用不同)<br>map.delete(objKey); // true(原始引用)
clear():一次性清空整个 Map
clear() 不需要参数,调用后 Map 的 size 变为 0,所有键值对被移除。它不返回值(返回 undefined)。
例如:
const map = new Map([['name', 'Alice'], ['age', 30]]);<br>map.clear();<br>console.log(map.size); // 0<br>console.log(map.has('name')); // false
它比循环调用 delete() 更高效,尤其在数据量大时,推荐优先用 clear() 清空。
常见误区和注意事项
-
delete()不会触发垃圾回收,只是断开 Map 内部对该键值对的引用;对象若无其他引用,才会被 GC 回收 -
clear()后 Map 实例仍可继续使用,无需重新 new - 没有类似数组的
splice()或按索引删除的方法——Map 只支持按 key 删除 - 想批量删多个 key?只能多次调用
delete(),或先遍历再clear()+ 重设(取决于场景)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










