如何用 keys 与 values 分别提取 Map 的所有键或所有值

Map.keys()和Map.values()返回迭代器而非数组,需用...map.keys()或Array.from()转数组才能调用map、forEach等方法;遍历顺序严格等于插入顺序;for...of可直接遍历迭代器,性能更优。Map.keys() 和 Map.values() 返回的是迭代器,不是数组直接对 Map.keys() 或 Map.values() 调用 .map()、.forEach() 会报错,因为它们返回的是 MapIterator,不是 Array。常见错误现象是:TypeError: map is not a function 或 undefined is not a function。必须显式转成数组才能用数组方法:用 ...map.keys() 展开为数组(推荐,简洁)用 Array.from(map.keys())(兼容旧环境,但稍冗长)避免 map.keys().toArray() ------ 这个方法根本不存在提取键或值时,顺序始终与插入顺序一致Map 保证遍历顺序 = 插入顺序,所以 map.keys() 和 map.values() 的迭代结果严格对应。这点和普通对象的 Object.keys() 不同(后者在 ES2015 前无序,现在虽多数有序但不保证)。使用场景举例:需要按添加顺序还原配置项名,或做「最近写入优先」的缓存清理 ------ 直接用 ...map.keys().pop() 就能拿到最后插入的键。插入顺序即遍历顺序,无需额外排序删除某键后,后续键的遍历位置不会"前移"------Map 是链表结构,不是稀疏数组如果依赖顺序做逻辑,别用 Object 替代 Map,否则在 Node.js 12 以下或某些 Safari 版本可能出错values() 提取的是值的引用,不是拷贝如果 Map 存的是对象、数组等引用类型,map.values() 返回的迭代器产生的每个值,都指向原对象的同一内存地址。修改其中一个,会影响 Map 内部存储的值。 文心快码 文心快码(Comate)是百度推出的一款AI辅助编程工具

相关推荐
东莞市云毅网络有限公司3 分钟前
企业知识库问答的自动化评测:构建 golden set 与回归脚本
python·rag·检索·企业知识库·评测集
头茬韭菜7 分钟前
第 1 篇:「架构鸟瞰与 Memory 初始化」—— 从 pip install 到三个工厂
jvm·架构·pip·mem0
reasonsummer19 分钟前
【办公类-146-07】20260906《总园大班6个班级四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
人工智能·python·c#
bksczm20 分钟前
MySQL基础之数据类型
数据库·mysql
程序员清风22 分钟前
从 JVM 内存模型到 GC 调优:Java 服务性能优化实战
java·jvm·性能优化
涛思数据(TDengine)33 分钟前
存储成本降低80%,Zendure用TDengine支撑117万台设备的能源数据分析
大数据·数据库·人工智能·数据分析·时序数据库·tdengine·工业
2601_9622845035 分钟前
利用Python语言实现实验室自动化
python·自动化·数据采集·labview·科学计算
shirsl35 分钟前
数据开发每日面试题 Day 1
大数据·数据库·sql·big data
隐擎fox37 分钟前
网络传输中的 DNS 泄漏成因剖析与 Python 自动化检测排查实战
python·网络协议·自动化·dns·ip/tcp
2601_962296281 小时前
python初学者怎么选IDE
ide·python·开发环境·初学者·工具选择