entries()方法返回数组迭代器对象,用于按索引顺序遍历键值对;需配合for...of、展开运算符或Array.from()使用,支持解构、转换及与其他迭代器组合,比forEach/map更灵活。

JavaScript 中数组的 entries() 方法返回一个数组迭代器对象,可以按索引顺序遍历数组的“键值对”,其中键是索引(数字),值是对应元素。
entries() 返回的是迭代器,不是数组
调用 arr.entries() 不会直接得到一个数组,而是返回一个可迭代对象,需配合 for...of、展开运算符或 Array.from() 使用:
-
for...of最常用,适合逐个处理键值对 - 用
[...arr.entries()]可转为二维数组(如[[0, 'a'], [1, 'b']]) -
Array.from(arr.entries())效果同上,兼容性略好于展开运算符
用 for...of 遍历键值对(推荐)
这是最直观、性能也好的方式:
示例:const fruits = ['apple', 'banana', 'cherry'];<br>for (const [index, value] of fruits.entries()) {<br> console.log(`索引 ${index}: ${value}`);<br>}<br>// 输出:<br>// 索引 0: apple<br>// 索引 1: banana<br>// 索引 2: cherry
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
立即学习“Java免费学习笔记(深入)”;
注意:解构写法 [index, value] 依赖迭代器每次产出的数组结构([key, value]),顺序固定,不可颠倒。
转换为普通数组后操作
如果需要对键值对做映射、过滤等操作,可先转成数组:
-
const pairs = [...fruits.entries()];→[[0,'apple'], [1,'banana'], [2,'cherry']] const indexed = pairs.map(([i, v]) => ({ index: i, item: v }));- 也可用
Object.fromEntries(pairs)转为对象(但仅当索引适合作为属性名且不重复时才合理)
entries 与 forEach / map 的区别
entries() 提供的是底层迭代能力,不改变原数组,也不自带回调;而 forEach() 和 map() 直接传入回调函数,隐式提供索引和元素:
-
arr.forEach((v, i) => ...)更简洁,适合简单遍历 -
arr.entries()更灵活,适合需要迭代器控制流(如中途break)、与其他迭代器组合(如zip模拟)、或统一处理多种可迭代对象(Map、Set、字符串等)的场景

















