Iterator Helpers

JavaScript 🟡 Mid

Définition

Méthodes paresseuses sur les itérateurs natifs, standardisées dans ES2025 : map, filter, take, drop, flatMap, reduce, forEach, some, every, find et toArray, plus Iterator.from pour envelopper un itérable quelconque. Chaque étape consomme les valeurs à la demande, sans tableau intermédiaire, ce qui permet de traiter des séquences infinies. ES2026 ajoute Iterator.concat.

Analogie

Une chaîne de montage où chaque pièce passe de poste en poste, au lieu d'empiler toutes les pièces entre chaque poste.

Exemple de code

function* naturels() { let n = 1; while (true) yield n++; }

const carresPairs = naturels()
  .filter(n => n % 2 === 0)
  .map(n => n * n)
  .take(3)
  .toArray(); // [4, 16, 36] — l'infini n'est jamais parcouru

// Map.values() sans copie en tableau
const total = stocks.values().reduce((a, b) => a + b, 0);

Cas d'usage

Traiter des flux ou de grandes collections (Map, Set, générateurs) sans copies ; lire un générateur infini par morceaux.

Anti-pattern

Appeler [...itérateur].map(...) par réflexe : on perd la paresse et on alloue un tableau complet.
#core#ES2025#performance

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre