for-of 循环本身不直接提供索引,但可通过 entries() 方法配合解构获取索引和值;entries() 返回 Array Iterator,支持 for-of 直接消费,语义清晰、兼容性好且可中断。

for-of 循环本身不直接提供索引,但它可以轻松配合 entries() 方法获取每个元素的索引和值。
for-of 直接遍历数组(只取值)
最常用的方式是直接遍历数组元素,简洁清晰:
const arr = ['a', 'b', 'c'];
for (const item of arr) {
console.log(item); // 'a', 'b', 'c'
}
用 entries() + for-of 获取索引和值
Array.prototype.entries() 返回一个可迭代对象,每次迭代返回 [index, value] 的数组。配合解构赋值即可同时拿到索引和值:
- 写法简洁:直接在 for-of 中解构
const [index, item] of arr.entries() - 索引是数字类型,不是字符串,可直接用于计算或比较
- 适用于需要位置信息的场景,比如高亮偶数位、跳过首项等
const arr = ['apple', 'banana', 'cherry'];
for (const [index, item] of arr.entries()) {
console.log(index, item); // 0 'apple' → 1 'banana' → 2 'cherry'
}
entries() 返回的是迭代器,不是数组
arr.entries() 返回的是 Array Iterator,不能直接调用 map 或 filter。如需转换为数组,可显式展开:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
const indexedArray = [...arr.entries()]; // [[0, 'apple'], [1, 'banana'], [2, 'cherry']]
但多数情况下无需转成数组,for-of 本身就消费迭代器,更高效。
对比其他带索引的遍历方式
相比 for (let i = 0; i 或 <code>forEach((item, i) => {...}),for-of + entries() 的优势在于:
- 语义清晰:明确表达“遍历带索引的条目”
- 兼容性好:ES6+ 环境普遍支持(包括 Node.js 6+ 和现代浏览器)
- 可中断:支持
break、continue、return(在函数内),比forEach更灵活

















