如果我有一个数组:
[1, 2, 3, 4, 5] -
我可以循环播放:
for (let [i, x] of arr.entries()){..}
如果我具有生成器功能:
function* g() {
yield 1; yield 2; yield 3;
}
我不能。
所以问题是如何使用for of和generator来获取循环的索引和键。
常规数组和生成器的语法是否相同。
最后,为什么生成器没有“进入”方法,因为它们都是可迭代的。
如果以不同的方式访问它们,迭代的意义何在?
答案 0 :(得分:2)
实际上,生成器的工作方式与正常的可迭代数据数据结构略有不同。 只是为了好玩,如果您希望从某个生成器中获取索引和值,而您要产生的内容确实具有索引,则可以。你什么都做不了。
function* gen() {
a = [3, 5, 6]
for (var i in a){
yield [i, a[i]]
}
}
for (let [i, x] of gen()){
console.log(i, x)
}
答案 1 :(得分:0)
您基本上想在生成器上使用Array.prototype.entries,但这种方式不起作用。
但是,您可以轻松地将生成器转换成数组,然后然后使用entries
方法:
function* g() {
yield 1; yield 2; yield 3;
}
for (let [i, x] of [...g()].entries()){..}