Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
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 flatMap() des instances de Iterator retourne un nouvel objet d'aide d'itérateur qui prend chaque élément de l'itérateur original, le passe à travers une fonction de mappage, et produit les éléments retournés par la fonction de mappage (qui sont contenus dans un autre itérateur ou itérable).
Une fonction à exécuter pour chaque élément produit par l'itérateur. Elle doit retourner un itérateur ou un itérable qui produit des éléments à être produits par flatMap(). Notez que contrairement à Array.prototype.flatMap(), vous ne pouvez pas retourner des valeurs uniques non itérables. La fonction est appelée avec les arguments suivants :
elementL'élément courant en cours de traitement.
indexL'indice de l'élément courant en cours de traitement.
Un nouvel objet d'aide d'itérateur. La première fois que la méthode next() de l'objet d'aide d'itérateur est appelée, elle appelle callbackFn sur le premier élément produit par l'itérateur sous-jacent, et la valeur de retour, qui doit être un itérateur ou un itérable, est produite un par un par l'objet d'aide d'itérateur (comme yield*). L'élément suivant est récupéré de l'itérateur sous-jacent lorsque le précédent retourné par callbackFn est terminé. Lorsque l'itérateur sous-jacent est terminé, l'objet d'aide d'itérateur est également terminé (la méthode next() produit { valeur: undefined, fait: true }).
Levée si callbackFn retourne une valeur non itérable ou un primitif de type chaîne de caractères.
flatMap accepte deux types de valeurs de retour de callbackFn : un itérateur ou un itérable. Ils sont traités de la même manière que Iterator.from() : si la valeur de retour est itérable, la méthode [Symbol.iterator]() est appelée et la valeur de retour est utilisée ; sinon, la valeur de retour est traitée comme un itérateur et sa méthode next() est appelée.
L'exemple suivant fusionne deux objets Map en un seul :
Cela évite de créer des copies temporaires du contenu de la map. Notez que le tableau [map1, map2] doit d'abord être converti en itérateur (en utilisant Array.prototype.values()), car Array.prototype.flatMap() ne fusionne que les tableaux, pas les itérables.
Les chaînes de caractères sont itérables, mais flatMap() rejette spécifiquement les primitives de type chaîne de caractères retournées par callbackFn, car le comportement d'itération par points de code n'est souvent pas ce que vous souhaitez.
Vous pouvez vouloir l'envelopper dans un tableau à la place afin que toute la chaîne soit produite en une seule fois :
Ou, si le comportement d'itération par points de code est souhaité, vous pouvez utiliser Iterator.from() pour le convertir en un itérateur approprié :
| ECMAScript® 2027 Language Specification # sec-iterator.prototype.flatmap |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 2 mars 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.