【发布时间】:2018-12-03 15:57:59
【问题描述】:
如果我有一个数组:
[1, 2, 3, 4, 5] -
我可以循环:
for (let [i, x] of arr.entries()){..}
如果我有生成器函数:
function* g() {
yield 1; yield 2; yield 3;
}
我不能。
所以问题是如何使用 for 和生成器获取循环的索引和键。
常规数组和生成器的语法是否相同。
最后为什么生成器没有方法“条目”,因为它们都是可迭代的。
如果以不同的方式访问它们,那么可迭代的意义何在。
【问题讨论】:
-
参见stackoverflow.com/questions/10179815/…,“对于一般的可迭代对象”。
entries()用于类似地图的东西,而生成器不是(你不能这样做g()[0])。 -
生成器不会创建整个数组。每次调用
next时,它们都会运行该函数的另一次迭代。生成器通常是无限的。这就是entries函数对您的代码来说不够好的原因之一。
标签: javascript