map.prototype.size 是只读属性,直接返回 map 中键值对数量:空 map 为 0,set() 更新键不增加 size,delete() 和 clear() 分别减 1 或重置为 0,支持 symbol 键,且比 object.keys().length 更准确。

Map.prototype.size 是一个只读属性,直接返回 Map 实例中当前存储的键值对数量,无需调用方法,也不受内部数据结构影响。
基本用法:直接访问 size 属性
创建 Map 后,随时可通过 .size 获取键值对个数:
- 空 Map 的
size为0 - 每成功调用
set()添加一个新键(或更新已有键),size自动加 1 - 调用
delete()移除键后,size自动减 1 -
clear()会将size重置为0
注意 key 的唯一性决定 size 变化
Map 中键是按引用或值严格相等判断的。重复设置相同键不会增加 size:
const map = new Map();
map.set('a', 1);
map.set('b', 2);
console.log(map.size); // 2
map.set('a', 99); // 更新已有键
console.log(map.size); // 还是 2,不是 3
与 Object 对比:size 更可靠
Object 没有原生计数属性,需手动统计或使用 Object.keys(obj).length,但会漏掉不可枚举属性和 Symbol 键;而 Map 的 size 始终精确反映实际键值对数量,包括 Symbol 类型的键:
const map = new Map();
map.set(Symbol('x'), 'value');
console.log(map.size); // 1
const obj = {};
obj[Symbol('x')] = 'value';
console.log(Object.keys(obj).length); // 0 —— Symbol 键不计入
常见误用提醒
-
size不是函数,不能写成map.size()(会报错) - 它不响应式——不会自动触发监听或更新视图,如在 Vue/React 中需手动触发更新
- 遍历过程中增删键会影响后续的
size值,需注意逻辑顺序
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











