entries()返回一个Array Iterator对象,每次迭代生成[index, value]二元数组;可通过for...of、展开运算符或next()消费,用于需同时访问索引与元素的场景。

entries() 是 ES6 为数组新增的原型方法,它返回一个可迭代对象(Iterator),每次迭代会生成一个包含 索引和对应元素 的二元数组 [index, value]。
entries() 返回的是什么
调用 arr.entries() 不会立即执行遍历,而是返回一个迭代器对象。这个对象有 next() 方法,每次调用返回形如 { value: [index, item], done: false } 的对象。
- 返回值是
Array Iterator类型,属于可迭代协议(iterable) - 每个
value是长度为 2 的数组:[索引, 元素] - 索引从
0开始,与数组位置严格对应
三种常用获取方式
你可以用 for...of、展开运算符或手动调用 next() 来消费这个迭代器:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
for...of 循环(最常用):
const arr = ['a', 'b', 'c'];
for (const [i, v] of arr.entries()) {
console.log(i, v); // 0 'a' → 1 'b' → 2 'c'
} -
展开成数组:
[...arr.entries()] // [[0,'a'], [1,'b'], [2,'c']] -
手动迭代:
const it = arr.entries();
console.log(it.next()); // { value: [0, 'a'], done: false }
console.log(it.next()); // { value: [1, 'b'], done: false }
entries 和其他类似方法的区别
别和 keys()、values() 搞混:
立即学习“Java免费学习笔记(深入)”;
-
arr.keys()→ 只返回索引:[0, 1, 2] -
arr.values()→ 只返回元素:['a', 'b', 'c'] -
arr.entries()→ 同时返回索引+值:[[0,'a'], [1,'b'], [2,'c']]
实际使用小提示
entries 常用于需要同时访问下标和内容的场景,比如构建带序号的列表、查找元素位置、转换为 Map 等:
- 转成 Map:
new Map(arr.entries())→Map(3) { 0 => 'a', 1 => 'b', 2 => 'c' } - 配合 findIndex 或 filter 更清晰:
arr.entries().find(([i, v]) => v === 'b')→[1, 'b'] - 注意:空数组调用 entries 仍返回有效迭代器,只是立刻 done: true

















