如何用 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辅助编程工具

相关推荐
这个DBA有点耶9 分钟前
数据库迁移灰度验证:从读流量到双写再到全量切换的完整路径
数据库·mysql·架构
Wang's Blog14 分钟前
PostgreSQL笔记16: 索引基础——概念、类型、创建与最佳实践
数据库·笔记·postgresql
用户31693538118322 分钟前
"批量"删除-sql
数据库
AAA@峥39 分钟前
Python 基础开篇:认识 Python、版本选择、环境部署与首个 HelloWorld
开发语言·python
Metaphor6921 小时前
使用 Python 快速在 Word 文档中插入图片
python·word
瀚高PG实验室1 小时前
SQL优化案例:使用分区表优化SQL查询性能
linux·服务器·数据库·sql·microsoft·postgresql
SelectDB1 小时前
15 分钟搭建 PostgreSQL + Apache Iceberg + Apache Doris 的湖仓分析平台
数据库
2601_966871401 小时前
Python 爬虫 + 数据挖掘实战:数据抓取与深度挖掘分析全流程
爬虫·python·数据挖掘
SelectDB1 小时前
科大讯飞可观测性底座:从 ES/Loki 到 Apache Doris 的可观测存储分析升级实践
数据库
青禾8371 小时前
Linux 系统信息、权限管理与 Python 并发编程(协程与线程)完全指南
linux·python