javascript中map的默认迭代器为entries(),直接for...of遍历可解构获取键值;keys()、values()、entries()分别返回键、值、键值对迭代器,支持展开运算符等;手动调用next()可底层控制;foreach非iterator机制,不支持中断。

JavaScript 中 Map 的 Iterator 可以直接通过 entries()、keys()、values() 方法获取,它们都返回一个可迭代对象(Iterator),配合 for...of 或展开语法就能自然遍历键值对、键或值。
Map 默认迭代器就是 entries()
Map 实例本身是可迭代的,其默认 Symbol.iterator 就指向 entries() 方法。这意味着直接用 for...of 遍历 Map,拿到的就是 [key, value] 数组:
-
for (const [k, v] of myMap) { ... }—— 解构直接获取键和值 -
for (const pair of myMap) { console.log(pair); }—— 输出如["name", "Alice"]
三种标准迭代方式各司其职
Map 提供三个专用方法,返回不同内容的 Iterator:
Java Linux版下载入口,提供 Oracle JDK 26.0.2 官方 Linux 安装包、Java 环境配置、JDBC 数据库连接和 Java 服务端开发相关信息。
-
myMap.keys()→ 迭代器,每次返回键(key) -
myMap.values()→ 迭代器,每次返回值(value) -
myMap.entries()→ 迭代器,每次返回[key, value]数组(也是默认行为)
它们都支持 for...of、Array.from()、扩展运算符等标准迭代操作。例如:[...myMap.keys()] 得到键数组,Array.from(myMap.values()) 得到值数组。
手动调用 Iterator 的 next() 方法
如果需要更底层控制,可以显式获取 Iterator 并调用 next():
-
const iter = myMap[Symbol.iterator]();或myMap.entries() -
iter.next()返回{ value: [k, v], done: false } - 反复调用直到
done: true,适合按需取值或实现自定义遍历逻辑
注意:forEach 不是 Iterator,但行为一致
myMap.forEach((value, key) => { ... }) 虽然常用,但它不是基于 Iterator 的机制,而是 Map 自带的方法。它不支持 break、continue 或中途退出,也不兼容 yield* 或生成器委托。真要中断遍历,优先选 for...of + break。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










