[英]JavaScript generator, function* and array method forEach
我想使用forEach數組方法作為Generator內的循環,而不是for 。
所以與其:
function* someFunction() {
for (let i = 0; i < someArray.length; i++) yield someArray[i];
}
我想要這樣的東西:
function* someFunction() {
someArray.forEach((a) => {yield a});
}
問題:普通函數(例如“ forEach”)內不允許產生收益
因此,問題是:繞過該問題的最佳且優雅的方法是什么。
我想使用
forEach
數組方法作為生成器內部的循環,而不是for。
不,你沒有。
你不是因為你做不到 。 這實際上是不可能的。 不要嘗試
您可能想做的就是縮短for
循環,使其更加簡潔,尤其是當您已經擁有數組或迭代器時。
簡單的解決方案是使用yield*
:
function* someFunction () {
yield* someArray
}
yield*
會將迭代委托給您在其上使用的可迭代對象,並且比嘗試使用.forEach
更為簡潔。
是的,我願意。 甚至有可能。
yield* some Array
不允許您在回調函數內調用yield
。
但是可以執行以下操作:
yield someArray.map((a) => {
return function* (a){yield a}(a);
});
仍然不是我真正想要的(簡化代碼),因此可能不值得這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.