javascript中iterator本身不直接提供索引,但entries()方法可返回[索引, 值]形式的迭代器,支持数组、字符串及部分类数组对象,可通过for...of解构或手动调用next()遍历。

JavaScript 中 Iterator 本身不直接提供索引,但可以通过 entries() 方法获取带索引的键值对迭代器,再结合 for...of 或手动调用 next() 实现带索引的遍历。
entries() 返回的是 [index, value] 形式的迭代器
Array.prototype.entries()、String.prototype.entries() 和部分类数组对象(如 arguments、NodeList)都支持 entries()。它返回一个可迭代对象,每次迭代产出一个长度为 2 的数组:[索引, 元素]。
- 数组调用
[10, 20, 30].entries()→ 迭代结果依次是[0, 10]、[1, 20]、[2, 30] - 字符串
"ab".entries()→[0, "a"]、[1, "b"]
用 for...of 遍历 entries 最简洁
这是最常用也最直观的方式,解构赋值让索引和值一目了然:
const arr = ["apple", "banana", "cherry"];
for (const [index, item] of arr.entries()) {
console.log(index, item); // 0 "apple", 1 "banana", 2 "cherry"
}
同样适用于字符串:
for (const [i, char] of "hello".entries()) {
console.log(i, char); // 0 "h", 1 "e", 2 "l", 3 "l", 4 "o"
}
手动调用 next() 获取带索引的项(适合控制流)
如果需要中途退出、跳过或条件处理,可以直接操作迭代器:
const iter = ["x", "y", "z"].entries();
let result = iter.next();
while (!result.done) {
const [idx, val] = result.value;
console.log(idx, val);
if (val === "y") break; // 提前退出
result = iter.next();
}
注意:每次调用 next() 返回 { value: [index, item], done: boolean },需解构 value 才能得到索引和值。
entries 与其他迭代方法的区别
entries() 是唯一原生返回索引的迭代方式;keys() 只返回索引(作为数字),values() 只返回值,都不含两者组合。若只需索引,可用 arr.keys();若只需值,arr.values() 更语义清晰,但带索引的场景首选 entries()。
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











