位置:首页 > JavaScript > JavaScript ES6数组entries方法获取索引和值迭代器

JavaScript ES6数组entries方法获取索引和值迭代器

时间:2026-08-18  |  作者:电竞小硕  |  阅读:0

entries() 返回的是一个 Array Iterator 对象。 每迭代一次,都会产出一个 [index, value] 这样的二元数组。它既可以配合 for...of、展开运算符使用,也能直接通过 next() 逐项读取。

它特别适合需要同时拿到索引和值的场景。

Ja vaScript 中 ES6 数组 entries 怎么获取索引和值的迭代器

entries() 是 ES6 为数组新增的原型方法。它返回一个可迭代对象(Iterator),每次迭代都会生成一个包含索引和对应元素的二元数组 [index, value]

entries() 返回的是什么

调用 arr.entries() 时,并不会立刻把整个数组遍历一遍。它返回的是一个迭代器对象。

这个对象带有 next() 方法。每调用一次,就会拿到一个形如 { value: [index, item], done: false } 的结果对象。

  • 返回值是 Array Iterator 类型,属于可迭代协议(iterable)
  • 每个 value 是长度为 2 的数组:[索引, 元素]
  • 索引从 0 开始,与数组位置严格对应

三种常用获取方式

你可以用以下几种方式来消费这个迭代器:

  • 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() 搞混。三者的返回内容不同:

  • 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

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多