javascript - 如何循环来自生成器的 JavaScript 迭代器?

标签 javascript iterator generator ecmascript-6

假设我们有以下生成器:

var gen = function* () {
  for (var i = 0; i < 10; i++ ) {
    yield i;
  }
};

遍历迭代器的最有效方法是什么? 目前,我通过手动检查 done 属性是否设置为 true 来完成此操作:

var item
  , iterator = gen();

while (item = iterator.next(), !item.done) {
  console.log( item.value );
}

最佳答案

迭代任何可迭代对象(支持@@iterator 的对象)的最佳方法是使用for..of。 , 像这样

'use strict';

function * gen() {
    for (var i = 0; i < 10; i++) {
        yield i;
    }
}

for (let value of gen()) {
    console.log(value);
}

或者,如果你想要一个数组,那么你可以使用 Array.from , 像这样

console.log(Array.from(gen());
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

关于javascript - 如何循环来自生成器的 JavaScript 迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333852/

相关文章:

node.js - typescript 异步生成器,用于套接字

python修改可变迭代器

javascript - 当一个事件发生时停止其他事件

javascript - 无法从@Url.Action 访问变量

c# - 是否可以从第一个元素以外的元素开始迭代使用 foreach?

c++ - 疯狂的 C++ vector 迭代器

python - 如何确保发电机正确关闭?

javascript - Next.js 路由器中的多个事件监听器

javascript - 将 node.js 登录到文件,无需其他模块

python - 如何迭代切片?