作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想全神贯注于生成器,但我就是不明白。
我有一个名为 KeyGen
的简单非生成器迭代器类,我想使用 JS 重写它 generators :
如果这不是生成器应该做的,请发表评论,我将关闭
class KeyGen {
constructor(numOfKeys) {
this.keys = new Array(numOfKeys).fill(0).map((i, index) => index);
this.iteratorCount = 0;
}
keyIterator() {
return {
next: () => this.keys[this.iteratorCount++]
}
}
}
const keyGen = new KeyGen(4);
console.log(keyGen.keyIterator().next());
console.log(keyGen.keyIterator().next());
console.log(keyGen.keyIterator().next());
console.log(keyGen.keyIterator().next());
最佳答案
非常简单,只需声明数组然后yield
每个元素:
function* gen(length) {
const keys = Array.from({ length }, (_, i) => i);
for (const key of keys) yield key;
}
const iter = gen(3);
console.log(iter.next().value);
console.log(iter.next().value);
console.log(iter.next().value);
关于javascript - 如何将简单的迭代器转换为 javascript 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50244076/
我是一名优秀的程序员,十分优秀!