簡體   English   中英

每個的JavaScript生成器,函數*和數組方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM