1. ホーム
  2. javascript

[解決済み] ES6 のフィルタリングとマップノデルリスト

2022-07-23 21:13:23

質問

ES6でnodelistをフィルタリングまたはマップする最も効率的な方法は何ですか?

私の読書に基づいて、私は次のオプションのいずれかを使用します。

[...nodelist].filter

または

Array.from(nodelist).filter

どれがお勧めですか?また、例えば配列を使用しない、より良い方法はありますか?

どのように解決するのですか?

  • [...nodelist] は、オブジェクトが反復可能であれば、オブジェクトから配列を作成します。
  • Array.from(nodelist) は、オブジェクトが反復可能な場合、オブジェクトから配列を作成します。 または オブジェクトが配列のようなものである場合 ( .length と数値のプロップがある)

あなたの2つの例は NodeList.prototype[Symbol.iterator] が存在する場合、2つの例は同じになります。なぜなら、どちらの場合も反復記号を扱っているからです。もし、あなたの環境が NodeList が反復可能であるように環境が設定されていない場合、最初の例は失敗し、2番目の例は成功します。 Babel 現在 はこのケースを適切に処理しません。 .

そのため、もしあなたの NodeList が反復可能な場合、どちらを使うかは本当にあなた次第です。私なら、ケースバイケースで選ぶと思います。一つの利点は Array.from の利点は、マッピング関数の第二引数を取ることです。 [...iterable].map(item => item) では一時的な配列を作らなければならないのに対し Array.from(iterable, item => item) はそうではありません。しかし、リストをマッピングしないのであれば、それは問題ではありません。