使用for-of遍历数组时获取元素的索引

希姆·维达斯(ŠimeVidas)

在JavaScript中,您可以使用遍历数组for-of(这是ES6功能):

let arr = ['foo', 'bar', 'baz'];

for (let elem of arr) {
  // elem = current element
}

但是有时,循环中也需要相应的元素索引;一种方法是显式使用entries迭代器,如下所示:

for (let [i, elem] of arr.entries()) {
  // elem = current element
  // i = current index
}

现在,也许只有我一个人,但是那.entries()部分使此模式有些混乱并且可读性较差,所以我entries将默认迭代器设置为arr

arr[Symbol.iterator] = Array.prototype.entries; 

现在我可以省略它:

for (let [i, elem] of arr) {
  // elem = current element
  // i = current index
}

现场演示: https : //jsbin.com/gateva/edit?js,控制台

但是,我还没有弄清楚如何将此“ hack”应用于所有数组(即使其成为全局默认值)。这是否可能,并且是否有任何副作用或不利影响(除了必须始终指定i,即使您不使用它,我想这也是短绒的问题)?

MichałPerłakowski

您可以创建自己的扩展native的类Array,并将其默认迭代器更改为Array.prototype.entries

class MyArray extends Array {}
MyArray.prototype[Symbol.iterator] = Array.prototype.entries

然后,您将创建一个新的MyArray实例,如下所示:

const arr = new MyArray(1, 2, 3)

然后像这样迭代它:

for (let [i, elem] of arr) {
  console.log(`Element ${elem} at index ${i}`)
}

请参阅JS Bin演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用for-of遍历数组时获取元素的索引

来自分类Dev

使用Ember Handlebars遍历数组时获取数组索引的正确方法是什么?

来自分类Dev

使用$ .parseJSON()时无法遍历数组

来自分类Dev

在遍历数组时使用jQuery .get()前置的元素在页面刷新时以不同顺序加载

来自分类Dev

使用 forEach 循环遍历数组时无法从 JSON 对象获取值

来自分类Dev

使用数组列表作为索引遍历数组以从数据集中绘制20个图像时遇到麻烦

来自分类Dev

使用空元素遍历数组(ES6)

来自分类Dev

使用空元素遍历数组(ES6)

来自分类Dev

尝试使用JavaScript遍历数组时出错

来自分类Dev

在遍历数组以删除空值时使用unset()

来自分类Dev

使用getElementbyID遍历数组时返回null

来自分类Dev

在遍历数组以删除空值时使用unset()

来自分类Dev

使用foreach遍历数组

来自分类Dev

使用* ngFor遍历数组,使用* ngIf选择数组中要列出的元素

来自分类Dev

如何使用jQuery遍历数组数组?

来自分类Dev

使用函数递归遍历数组数组

来自分类Dev

使用 Mustache 遍历数组数组

来自分类Dev

使用each_with_index遍历数组而无需单独的索引变量

来自分类Dev

如何使用ng-click编写函数以遍历数组的索引

来自分类Dev

当我在打字稿中使用减少数组函数时如何遍历数组?

来自分类Dev

使用php批量遍历数组

来自分类Dev

使用内联汇编循环遍历数组

来自分类Dev

使用$(array).each遍历数组

来自分类Dev

使用Angular JS从JSON遍历数组

来自分类Dev

使用空格键遍历数组

来自分类Dev

使用每个jquery遍历数组

来自分类Dev

PHP使用for循环遍历数组

来自分类Dev

C ++使用指针遍历数组

来自分类Dev

我如何使用innerHTML遍历数组

Related 相关文章

热门标签

归档