for of可直接遍历Map和Set因其实现了Iterator接口:Set返回元素本身,Map默认返回[key, value]数组;Object无默认Iterator,需转数组后遍历。

for of 循环可以直接遍历 Map 和 Set,因为它们原生部署了 Iterator 接口。遍历时拿到的值取决于数据结构类型:Set 返回每个元素本身,Map 默认返回的是 [key, value] 数组。
遍历 Set:直接获取元素值
Set 中的每一项都是唯一值,for of 遍历时每次得到的就是该值本身:
const mySet = new Set(['a', 'b', 'c']);
for (const item of mySet) {
console.log(item); // 'a' → 'b' → 'c'
}不需要额外解构或调用方法,简洁直观。
遍历 Map:默认得到 [key, value] 数组
Map 的 for of 遍历默认返回键值对数组,可直接用数组解构获取 key 和 value:
立即学习“Java免费学习笔记(深入)”;
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
const myMap = new Map([['name', 'Alice'], ['age', 30]]);
for (const [key, value] of myMap) {
console.log(key, value); // 'name' 'Alice' → 'age' 30
}如果不解构,会得到类似 ['name', 'Alice'] 这样的数组,需手动索引访问。
Map 的其他遍历方式(keys / values / entries)
Map 提供了三个专用方法,配合 for of 可按需取键、值或键值对:
-
myMap.keys():只遍历键 —
for (const key of myMap.keys()) { ... } -
myMap.values():只遍历值 —
for (const val of myMap.values()) { ... } -
myMap.entries():等价于默认行为,返回键值对 —
for (const [k, v] of myMap.entries()) { ... }
注意点:不能直接 for of 遍历普通对象
Object 没有默认 Iterator 接口,以下写法会报错:
const obj = { a: 1, b: 2 };
for (const item of obj) { /* TypeError */ }如需遍历对象,应先用 Object.keys()、Object.values() 或 Object.entries() 转成数组再遍历。

















