1. ホーム
  2. ジャバスクリプト

[解決済み】Javascriptのイテラブルを配列に変換する

2022-04-09 05:18:03

質問

新しい 地図 オブジェクトは、FirefoxとChromeの最新バージョンですでにサポートされているからです。

しかし、quot;functional" プログラミングでは非常に限定的だと感じています。なぜなら、古典的なマップやフィルタなどのメソッドがないためです。 [key, value] のペアです。forEachはありますが、これはコールバックの結果を返しません。

もし、その map.entries() を MapIterator から単純な Array に変換すれば、標準の .map , .filter を追加でハックする必要はありません。

JavascriptのIteratorをArrayに変換する良い方法はありますか? Pythonでは、次のように簡単にできます。 list(iterator) ... しかし Array(m.entries()) は、Iterator を最初の要素とする配列を返します!!!!

EDIT

私はMapが動作する場所、つまり少なくともChromeとFirefoxで動作する答えを探していることを明記するのを忘れていました(Array.fromはChromeでは動作しません)。

PS.

ファンタジスタがいるのは知っている wu.js が、traceurに依存しているため、気が進まない...。

解決方法は?

新しい Array.from 機能 は、任意の反復表を配列インスタンスに変換します。

var arr = Array.from(map.entries());

現在では Edge、FF、Chrome、Node 4+でサポートされています。 .

もちろん map , filter といったメソッドをイテレータのインターフェイスで直接使用することで、配列の確保を回避することができます。また、高階の関数の代わりにジェネレータ関数を使用するのもよいでしょう。

function* map(iterable) {
    var i = 0;
    for (var item of iterable)
        yield yourTransformation(item, i++);
}
function* filter(iterable) {
    var i = 0;
    for (var item of iterable)
        if (yourPredicate(item, i++))
             yield item;
}