entries()是数组内置方法,返回可迭代对象,每项为[索引, 值]二元数组;配合for...of解构const [i, v] of arr.entries()可自然获取索引和值,顺序固定且无需计数器。

entries() 是数组的内置方法,返回一个可迭代对象,每个元素是 [索引, 值] 的二元数组(即键值对)。配合 for...of 循环,能自然、清晰地同时拿到索引和值,无需手动维护计数器。
用 for...of + entries() 同时解构索引和值
这是最常用、最直观的方式:
const arr = ['a', 'b', 'c'];
for (const [index, value] of arr.entries()) {
console.log(index, value); // 0 'a' → 1 'b' → 2 'c'
}
注意:必须用 for...of(不是 for...in),且解构写法 [index, value] 顺序固定——第一个是索引(number),第二个是对应元素(any)。
entries() 返回的是迭代器,可转为数组或手动调用 next()
如果你需要提前查看结构或做中间处理,可以展开或手动遍历:
-
转成数组看全貌:
Array.from(arr.entries())→[[0,'a'], [1,'b'], [2,'c']] -
手动取一项:
const iter = arr.entries(); console.log(iter.next().value); // [0, 'a']
对比其他遍历方式:为什么 entries() 更干净?
不用 forEach((v, i) => {...}) 的回调嵌套,也不用 for (let i = 0; i 手动索引。entries() 把“索引+值”作为一等公民暴露出来,语义明确,适合需要两者且逻辑偏重数据结构的场景(比如构建映射、条件跳过、批量修改带位置信息的操作)。
小提醒:entries() 不改变原数组,且兼容性良好
ES6+ 支持(Chrome 38+, Firefox 27+, Safari 9+, Node.js 0.12+),IE 不支持。如需兼容旧环境,可用 Array.prototype.keys() 或 Object.entries(Array.from(arr)) 替代,但推荐优先用原生 entries()。











