Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Iterator : méthode map()

Baseline 2025
Newly available

Depuis March 2025, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.

La méthode map() des instances de Iterator retourne un nouvel objet d'aide à l'itérateur qui produit les éléments de l'itérateur, chacun transformé par une fonction de mappage.

Syntaxe

js
map(callbackFn)

Paramètres

callbackFn

Une fonction à exécuter pour chaque élément produit par l'itérateur. Elle retourne la valeur qui sera produite par l'objet d'aide à l'itérateur. La fonction est appelée avec les arguments suivants :

element

L'élément actuel en cours de traitement.

index

L'indice de l'élément actuel en cours de traitement.

Valeur de retour

Un nouvel objet d'aide à l'itérateur. Chaque fois que la méthode next() de l'objet d'aide à l'itérateur est appelée, elle obtient l'élément suivant de l'itérateur sous-jacent, applique callbackFn et renvoie la valeur retournée. Lorsque l'itérateur sous-jacent est terminé, l'objet d'aide à l'itérateur est également terminé (la méthode next() produit { value: undefined, done: true }).

Description

Le principal avantage des objets d'aide à l'itérateur par rapport aux méthodes de tableau est qu'ils sont paresseux, ce qui signifie qu'ils ne produisent la valeur suivante que lorsqu'elle est demandée. Cela évite les calculs inutiles et permet également de les utiliser avec des itérateurs infinis. La méthode map() permet de créer un nouvel itérateur qui, lorsqu'il est itéré, produit des éléments transformés.

Exemples

Utiliser la méthode map()

L'exemple suivant crée un itérateur qui produit les termes de la suite de Fibonacci, le transforme en une nouvelle suite avec chaque terme au carré, puis lit les premiers termes :

js
function* fibonacci() {
  let actuel = 1;
  let suivant = 1;
  while (true) {
    yield actuel;
    [actuel, suivant] = [suivant, actuel + suivant];
  }
}

const seq = fibonacci().map((x) => x ** 2);
console.log(seq.next().value); // 1
console.log(seq.next().value); // 1
console.log(seq.next().value); // 4

Utiliser map() avec une boucle for...of

map() est le plus pratique lorsque vous ne créez pas manuellement l'itérateur. Comme les itérateurs sont également itérables, vous pouvez itérer sur l'objet d'aide retourné avec une boucle for...of :

js
for (const n of fibonacci().map((x) => x ** 2)) {
  console.log(n);
  if (n > 30) {
    break;
  }
}

// Affiche :
// 1
// 1
// 4
// 9
// 25
// 64

Ceci est équivalent à :

js
for (const n of fibonacci()) {
  const n2 = n ** 2;
  console.log(n2);
  if (n2 > 30) {
    break;
  }
}

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-iterator.prototype.map

Compatibilité des navigateurs

Voir aussi