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

相关推荐
星云穿梭4 小时前
用Python写一个带图形界面的学生管理系统——完整教程
python
金銀銅鐵4 小时前
用 Pygame 实现 15 puzzle
python·数学·游戏
倔强的石头_10 小时前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
黄忠10 小时前
大模型之LangGraph技术体系
python·llm
冬奇Lab1 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
hboot1 天前
AI工程师第二课 - 数据处理
人工智能·python·数据分析
用户8356290780511 天前
使用 Python 自动化 PowerPoint 形状布局与格式设置
后端·python
用户8356290780511 天前
用 Python 自动化 PowerPoint 演讲者备注添加
后端·python
ClouGence1 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
黄忠1 天前
01-系统架构设计-LangGraph状态机与多源异构RAG
python