更简单的方法来迭代生成器
Easier way to iterate over generator?
是否有一种更简单的方法(比我使用的)来迭代生成器?某种最佳实践模式或通用包装器?
在c#中,我通常会有这样简单的东西:
public class Program {
private static IEnumerable<int> numbers(int max) {
int n = 0;
while (n < max) {
yield return n++;
}
}
public static void Main() {
foreach (var n in numbers(10)) {
Console.WriteLine(n);
}
}
}
在JavaScript中尝试同样的方法,这是我能想到的最好的:
function* numbers(max) {
var n = 0;
while (n < max) {
yield n++;
}
}
var n;
var numbers = numbers(10);
while (!(n = numbers.next()).done) {
console.log(n.value);
}
虽然我期望的是这样简单的事情…
function* numbers(max) {
let n = 0;
while (counter < max) {
yield n++;
}
}
for (let n in numbers(10)) {
console.log(n);
}
…哪个更容易读,更简洁,但显然还没有那么简单?我尝试过node 0.12.7
与--harmony
标志和node 4.0.0 rc1
。如果这个功能可用,我还需要做些什么来启用这个功能(包括使用let
)吗?
您需要为生成器使用for..of
语法。这将为可迭代对象创建一个循环。
function* numbers(max) {
let n = 0;
while (n < max) {
yield n++;
}
}
使用它:for (let n of numbers(10)) {
console.log(n); //0123456789
}
文档相关文章:
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 使用Javascript迭代同级的最快方法是什么
- Javascript:如何迭代对象[Key:value],但跳过一些键([最快的方法])
- 迭代Promise迭代器的非递归方法
- 是否有可能在 JavaScript 中使用异步方法进行迭代
- JavaScript uncatch TypeError:无法在第二次迭代时调用未定义的方法“拼接”
- 每次迭代在 Foreach 循环中重复 PHP 睡眠方法
- 有没有办法迭代函数作用域内的公共方法
- 在 javascript 中 for 循环的每次迭代中声明一个新的、唯一的变量是一种好方法
- 在循环中使用 q promise 的最佳方法是什么?等待链完成,然后再迭代到下一个
- 是否可以在 ES6 Set 实例上使用数组迭代方法
- 是否可以使用 CoffeeScript 迭代类的静态变量和方法
- 为什么在 javascript 中向数组原型添加方法会破坏 for 循环上的迭代
- 这个迭代可以用一些更好的方法完成吗?
- 通过javascript对象数组进行迭代的不同方法
- 使用every()和其他迭代方法返回的次数
- 检查地图中是否有第一次迭代的方法
- For和While迭代方法的比较
- 为什么javascript中的迭代方法需要(item, index和array) ?
- JavaScript 数组迭代方法