JavaScript-面试-Map-Set与Weak
2026年10月16日·Admin·2 次浏览
面试题:Map 和对象区别?Set 去重?WeakMap 使用场景?
Map vs 普通对象
| Map | Object | |
|---|---|---|
| 键类型 | 任意(含对象、NaN) | 主要是字符串/Symbol |
| 顺序 | 插入序可预期 | 整数字符串键有「类数组」排序特例 |
| 大小 | map.size |
需 Object.keys 数 |
| 序列化 | 默认 JSON 不友好 | JSON 原生 |
适合:动态键集合、频繁增删、键非字符串。
Set
唯一值集合,可 [...new Set(arr)] 去重(对象引用按引用去重,不等同深比较)。
WeakMap / WeakSet
- 键(WeakMap)或值(WeakSet 仅存对象)为弱引用,不可遍历、无
size。 - 用途:私有数据挂到 DOM/对象上,不延长对象寿命,避免泄漏。