entries()是数组内置迭代器方法,返回Array Iterator对象,每次迭代产生[index, value]二元数组;需用for...of、扩展运算符或.next()使用,不可直接打印;区别于keys()(仅索引)和values()(仅值)。

JavaScript 中 entries() 是数组的内置迭代器方法,它返回一个可遍历的迭代器对象,每次迭代产生一个包含 索引 和 对应元素值 的二元数组 [index, value]。
entries() 返回的是迭代器,不是数组
调用 arr.entries() 不会直接得到数组,而是返回一个 Array Iterator 对象。它本身不可直接打印或索引,需配合 for...of、扩展运算符或手动调用 .next() 使用。
- ❌ 错误:
console.log(arr.entries())只显示Array Iterator {} - ✅ 正确:用
for (const [i, v] of arr.entries()) { ... }
常用写法:for...of 遍历索引与值
这是最直观、推荐的方式,解构赋值让代码简洁清晰:
const colors = ['red', 'green', 'blue'];
for (const [index, value] of colors.entries()) {
console.log(`索引 ${index}: ${value}`);
}
// 输出:
// 索引 0: red
// 索引 1: green
// 索引 2: blue
转成数组:用扩展运算符或 Array.from
若需要把 entries() 结果转为普通二维数组(如 [[0,'red'], [1,'green'], [2,'blue']]),可用以下任一方式:
立即学习“Java免费学习笔记(深入)”;
[...arr.entries()]Array.from(arr.entries())
之后就能用 map、filter 等方法处理了,例如提取所有索引:[...arr.entries()].map(([i]) => i)。
entries 与 keys/values 的区别
三者都是数组迭代器方法,但返回内容不同:
-
arr.keys()→ 迭代器,只产出索引(0, 1, 2...) -
arr.values()→ 迭代器,只产出值('red', 'green', 'blue') -
arr.entries()→ 迭代器,产出[index, value]对
它们都遵循迭代协议,支持 for...of,也可传给 Array.from 或解构使用。


















