javascript中获取集合键值对迭代器的核心是调用entries()方法:map返回[key,value],set返回[value,value],array返回[index,element],object需通过object.entries(obj)[symbol.iterator]()获取。

JavaScript 中获取集合的键值对迭代器对象,核心是调用集合实例的 entries() 方法,它返回一个可迭代的 Iterator 对象,每次迭代返回 [key, value] 数组形式的键值对。
Map 和 Set 的 entries() 方法
Map 和 Set 原生支持 entries()。其中 Map.prototype.entries() 返回键值对迭代器;Set.prototype.entries() 虽然语义上只有值,但为兼容性也返回 [value, value] 形式的键值对。
-
new Map([['a', 1], ['b', 2]]).entries()→ 迭代出['a', 1]、['b', 2] -
new Set(['x', 'y']).entries()→ 迭代出['x', 'x']、['y', 'y']
Array 的键值对迭代:使用 Array.prototype.entries()
数组的 entries() 返回索引(键)和元素(值)组成的键值对,索引为数字类型,元素为对应位置的值。
Java Linux版下载入口,提供 Oracle JDK 26.0.2 官方 Linux 安装包、Java 环境配置、JDBC 数据库连接和 Java 服务端开发相关信息。
-
['apple', 'banana'].entries()→ 迭代出[0, 'apple']、[1, 'banana'] - 常用于
for...of或展开运算符:[...arr.entries()]得到[[0,'apple'], [1,'banana']]
Object 没有原生 entries() 迭代器,需转换
普通对象不是可迭代对象,也没有 .entries() 方法。要获取其键值对迭代器,需先用 Object.entries(obj) 得到二维数组,再用 Array.prototype[Symbol.iterator](即默认迭代器)遍历——但更直接的是:把结果转为迭代器对象。
-
Object.entries({x: 10, y: 20})返回[['x', 10], ['y', 20]] - 要得到真正的 Iterator 对象:
(function*(){ yield* Object.entries(obj); })(),或更简洁地Object.entries(obj)[Symbol.iterator]() - 注意:
Object.entries()返回的是数组,不是迭代器;必须显式调用[Symbol.iterator]()才能得到迭代器对象
自定义对象添加键值对迭代能力
让任意对象支持 for...of 遍历键值对,只需部署 [Symbol.iterator] 方法,内部返回 Object.entries(this)[Symbol.iterator]() 即可。
- 例如:
obj[Symbol.iterator] = function() { return Object.entries(this)[Symbol.iterator](); }; - 之后
for (const [k, v] of obj) {...}就能正常工作 - 注意属性必须是自身可枚举属性(
Object.keys范围),不包括原型链上的键
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










