← JavaScript navigator 对象 JavaScript Map delete() 方法 →

JavaScript Map clear() 方法

原创 2026-03-24 JavaScript 已有人查阅

Map 对象的 clear() 方法:清空所有键值对

在 JavaScript 中,Map 是一种常用的数据结构,它以键值对的形式存储数据,并且键可以是任意类型。当我们需要清空 Map 中的所有内容时,clear() 方法就是专门解决这个需求的。

clear() 方法的作用很直接:移除 Map 对象中的所有键值对,执行后 Map 会变成空状态,其 size 属性会变为 0。

基本语法

map.clear()

这个方法没有参数,也没有返回值。调用后,Map 中的所有条目都会被删除。

示例 1:清空前后的 size 变化

下面这个示例展示了 clear() 方法如何影响 Map 的大小。代码中我们创建了一个存储前端框架名称的 Map,然后清空它并观察 size 的变化。

<script>
// 创建一个 Map 实例,来自代码号学习编程
let frameworkMap = new Map();

// 添加几个前端框架数据
frameworkMap.set(1, "Vue.js");
frameworkMap.set(2, "React");
frameworkMap.set(3, "Svelte");

console.log("清空前 Map 大小: " + frameworkMap.size);

// 执行清空操作
frameworkMap.clear();

console.log("清空后 Map 大小: " + frameworkMap.size);
</script>

执行结果

清空前 Map 大小: 3
清空后 Map 大小: 0

示例 2:验证 clear() 后元素是否存在

很多时候我们不仅需要知道 Map 变空了,还需要验证某个特定的键是否已经被移除。这里可以用 has() 方法来检查。

<script>
let userScores = new Map();

userScores.set("user001", 95);
userScores.set("user002", 87);
userScores.set("user003", 92);

console.log("清空前 user002 是否存在: " + userScores.has("user002"));

userScores.clear();

console.log("清空后 user002 是否存在: " + userScores.has("user002"));
console.log("清空后 Map 大小: " + userScores.size);
</script>

执行结果

清空前 user002 是否存在: true
清空后 user002 是否存在: false
清空后 Map 大小: 0

深入理解:clear() 与重新赋值的区别

有一个细节值得注意:调用 clear() 和直接给 Map 变量赋一个空 Map,效果上虽然最终都是得到一个空 Map,但底层行为不同。

let mapA = new Map();
mapA.set("key1", "value1");

// 方式一:使用 clear()
mapA.clear();

// 方式二:重新赋值
let mapB = new Map();
mapB.set("key1", "value1");
mapB = new Map();  // 重新指向一个新的空 Map

区别在于

  • clear() 会直接清空原 Map 对象内的所有条目,但 Map 对象的引用保持不变。如果其他地方也持有这个 Map 的引用,那些地方也能看到清空后的状态。

  • 重新赋值则是创建了一个全新的 Map 对象,原 Map 如果没有其他引用,会被垃圾回收机制处理。但如果有其他地方还引用了原 Map,那些引用指向的仍然是旧数据。

个人见解:如果你的 Map 在多个地方被引用(比如作为对象属性传递给了多个模块),用 clear() 更安全,因为所有引用都能同步看到清空效果。如果只是局部使用且后续需要重新填充,重新赋值的方式在语义上更清晰,也能让旧的 Map 对象尽快被回收。

实际应用场景

场景一:表单数据重置

在管理后台中,用户填写表单时,我们可能用 Map 来临时存储未提交的数据。当用户点击“重置”按钮时,调用 clear() 清空所有已填内容。

场景二:缓存清理

某些场景下用 Map 作为前端缓存,比如存储用户最近访问的数据。当缓存达到上限或用户主动清理时,clear() 可以一键清空。

场景三:轮询数据刷新

每隔一段时间从服务器拉取新数据,覆盖本地 Map 中的旧数据。这时候 clear() 配合循环添加,比重新创建 Map 对象更能保证引用的一致性。

本节课程知识要点

要点 说明
方法名称 clear()
所属对象 Map 实例
参数
返回值 无(undefined)
作用 删除 Map 中所有键值对
执行后 size 变为 0
适用场景 重置 Map 状态、清空缓存、数据刷新前清理

个人建议

  1. 清空前确认是否需要保留数据clear() 是不可逆操作,执行后数据无法恢复。如果只是临时需要清空,可以考虑先复制一份再做清理。

  2. 注意性能clear() 的操作复杂度是 O(n),n 是 Map 的大小。对于数据量非常大的 Map,频繁调用 clear() 可能会带来性能开销,但这种场景在开发中不多见,通常不需要过分担心。

  3. 清空后及时置空引用:如果你确定 Map 后续不再使用,除了调用 clear(),还可以将变量设为 null,帮助垃圾回收机制更早地释放内存。

  4. 与 WeakMap 的区别WeakMap 没有 clear() 方法,也不支持遍历。如果需要频繁清空全部数据,使用普通 Map 会更方便。

clear() 方法本身很简单,但理解它背后的引用机制和适用场景,能帮助你在编码中做出更合适的选择。

← JavaScript navigator 对象 JavaScript Map delete() 方法 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号