1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

2025年に追加されたJavaScriptのIterator機能、どこに使える?

Posted at

元々もJavaScriptにIterator機能はありましたが、2025年になって大きな修正が入りました。

新しく追加された便利なメソッドで、コードをもっと簡潔に書けるようになりましたので記事でまとめてみました。

2025年追加のIterator機能

2025年のECMAScript仕様では、イテレーターに以下のような便利なメソッドが追加されました!

最初n個の操作

  • take(n): 最初のn要素だけを取得
  • drop(n): 最初のn要素をスキップ

Arrayのような操作

  • filter(predicate): 条件に合う要素だけをフィルタリング
  • map(callback): 各要素を変換
  • flatMap(callback): 各要素を変換し、結果を平坦化
  • reduce(callback, initialValue): 要素を集約
  • forEach(callback): 各要素に対して処理を実行

変換系

  • toArray(): イテレーターを配列に変換

takeの活用例

takeメソッドは特に便利で、今回はtakeの使い方から変わった書き心地を見ていきたいと思います。

takeは最初のn個の要素だけを取り出すことができます。
これで今までのArrayの操作と違って、全要素を処理せずに必要な部分だけを取得できるのでパフォーマンスを上げることができます。

簡単例

// 大きな配列から最初の5要素だけを取得して処理
const hugeLargeArray = Array.from({ length: 10000 }, (_, i) => i + 1);
// 従来の方法
// sliceだと10000個を全部まわらないといけない
const first5Legacy = hugeLargeArray.slice(0, 5);

// for文でも書けるが、一手間かかる

const first5WithForLoop = [];

for (let i = 0; i < hugeLargeArray.length && i < 5; i++) {
  first5WithForLoop.push(hugeLargeArray[i]);
}
// 新しいtakeメソッドを使用
const first5WithTake = [...hugeLargeArray[Symbol.iterator]().take(5)];
// もっと短く書くことも可能
const first5Simple = [...hugeLargeArray.values().take(5)];

実用例

以下のように条件に一致する最初のn個の要素だけを取得する時、もっと関数型プログラミングぽくかけるようになりますね!

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// 最初の3つの偶数だけを取得
const firstThreeEven = [...numbers
  .values()
  .filter(n => n % 2 === 0)
  .take(3)];

console.log("最初の3つの偶数:", firstThreeEven); // [2, 4, 6]

おわりに

あまり他の言語をいっぱい触ってきてはいませんが、Rustのようなiteratorの操作がこれからもできるようになっていくイメージでうかね~

新しく追加されたPromise.tryも気になるのでブログでまとめてみたいところ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?