如何用 has 与 delete 管理 Map 中的特定键值映射

Map.prototype.has()仅判断键是否存在,即使值为undefined也返回true;delete()彻底移除键值对,而set(key, undefined)仍保留键;clear()批量清空性能远优于循环delete()。Map.prototype.has() 判断键是否存在,但不等于值不为 undefined很多人误以为 has() 是在检查「这个键对应的值是不是有效」,其实它只关心键本身是否被显式设置过。哪怕你执行过 map.set('k', undefined),has('k') 依然返回 true。常见错误现象:用 if (map.get('x') !== undefined) 替代 has('x'),结果漏掉显式存了 undefined 的情况;或者反过来,用 has() 去判断值是否「有业务意义」,导致逻辑错判。判断键是否存在(比如做缓存命中检测),优先用 has()判断值是否「非空/有效」(如非 null、非 undefined、非空字符串),必须用 get() + 显式比较has() 性能略优于 get(),因为它不读取值,只查哈希表结构delete() 删除键后,get() 返回 undefined,但 has() 返回 falsedelete() 是唯一能真正从 Map 中移除键值对的操作。它和对象的 delete obj.key 不同------Map 的 delete() 是方法调用,且返回布尔值表示是否删除成功。使用场景:需要彻底清理缓存项、释放引用避免内存泄漏、或实现 LRU 等需精确控制键生命周期的逻辑。map.delete('k') 成功删除返回 true,删不存在的键返回 false删完再调 get('k') 得 undefined,has('k') 得 false,二者行为一致别用 map.set('k', undefined) 代替 delete():键还在,遍历仍会出现,内存也没释放注意兼容性:Map.prototype.delete() 在 IE 完全不支持,Node.js 0.12+ 起可用has() 和 delete() 都不能替代 clear() 批量清空想清空整个 Map?别循环调 delete(),也别靠 has() 判断后跳过------直接上 clear()。 WisPaper 复旦大学研发的AI学术搜索工具,5分钟内筛选1000篇论文

相关推荐
默_笙2 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
qq_426003962 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技2 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
这个DBA有点耶2 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G2 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备2 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
只睡四小时2 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas