for-of 配合 entries() 是获取数组索引和值最简洁直观的方式;entries() 返回键值对迭代器,产出 [index, value] 二元数组,支持解构、提前退出且不生成中间数组。

for-of 循环配合数组的 entries() 方法,是获取数组索引和值最简洁、直观的方式之一。
entries() 返回的是键值对迭代器
arr.entries() 不返回新数组,而是返回一个 可遍历的迭代器对象,每次迭代产出一个长度为 2 的数组:[index, value]。这个结构天然适配解构赋值。
- 它不会修改原数组,也不生成中间数组(比
Array.from(arr.entries())更轻量) - 支持提前退出(如用
break或return),因为它是真正的迭代器
用解构直接拿到 index 和 value
在 for-of 中直接对每次迭代的项进行数组解构,一行代码就能同时声明索引和值:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const colors = ['red', 'green', 'blue'];
for (const [index, value] of colors.entries()) {
console.log(index, value); // 0 'red' → 1 'green' → 2 'blue'
}
这里 [index, value] 就是解构 entries() 每次产出的 [0, 'red'] 这样的二元数组。
立即学习“Java免费学习笔记(深入)”;
注意 entries() 的返回值不是数组,不能直接用 map/filter
如果你试图写 colors.entries().map(...),会报错:因为迭代器对象没有 map 方法。
- 需要转换成数组才可用高阶方法:
Array.from(colors.entries()).map(...) - 但若只是遍历读取,for-of + entries() 是更高效、语义更清晰的选择
对比其他常见方式
• for (let i = 0; i :要手动维护索引,略显冗余<br>
• <code>arr.forEach((value, index) => {...}):无法用 break 中断,且不支持 await(异步循环需用 for-of)
• for (const [i, v] of arr.entries()):语法简洁、支持中断、语义明确、兼容异步 —— 推荐作为默认选择

















