hsz*_*hsz 5 javascript iterator generator ecmascript-6
我们假设我们有以下生成器:
var gen = function* () {
for (var i = 0; i < 10; i++ ) {
yield i;
}
};
Run Code Online (Sandbox Code Playgroud)
循环遍历迭代器的最有效方法是什么?目前我是手动检查done属性是否设置true:
var item
, iterator = gen();
while (item = iterator.next(), !item.done) {
console.log( item.value );
}
Run Code Online (Sandbox Code Playgroud)
迭代任何iterable(一个支持@@ iterator的对象)的最佳方法是使用for..of,就像这样
'use strict';
function * gen() {
for (var i = 0; i < 10; i++) {
yield i;
}
}
for (let value of gen()) {
console.log(value);
}
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要一个数组,那么你可以Array.from像这样使用
console.log(Array.from(gen());
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Run Code Online (Sandbox Code Playgroud)
while问题中循环的一个独立的单行替代方案是for循环。对于纯粹的副作用或耗尽的迭代的特殊情况,我们避免了绑定下一个项目值,然后不在解决方案中使用它的问题,而不是在最后对结果做一些事情for-of:
for (let n = iterator.next(); !n.done; n = iterator.next()) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |