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.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis janvier 2020.
La méthode flatMap() des instances de Array retourne un nouveau tableau créé en appliquant une fonction de rappel à chaque élément du tableau, puis en aplatissant le résultat d'un niveau. Elle est identique à une map() suivi d'un flat() de profondeur 1 (arr.map(...args).flat()), mais légèrement plus efficace que d'appeler ces deux méthodes séparément.
La fonction à exécuter pour chaque élément du tableau. Elle doit retourner un tableau contenant les nouveaux éléments du nouveau tableau, ou une seule valeur qui n'est pas un tableau à ajouter au nouveau tableau. La fonction est appelée avec les arguments suivants :
elementL'élément en cours de traitement dans le tableau.
indexL'indice de l'élément en cours de traitement dans le tableau.
arrayLe tableau sur lequel flatMap() a été appelée.
thisArg FacultatifLa valeur à utiliser comme this lors de l'exécution de callbackFn. Voir les méthodes itératives.
Un nouveau tableau avec chaque élément étant le résultat de la fonction de rappel (callback en anglais) et aplati d'un niveau.
La méthode flatMap() est une méthode itérative. Voir Array.prototype.map() pour une description détaillée de la fonction de rappel. La méthode flatMap() est identique à map(callbackFn, thisArg) suivie de flat(1) : pour chaque élément, elle produit un tableau de nouveaux éléments et concatène les tableaux résultants pour former un nouveau tableau. Lire la section méthodes itératives pour plus d'informations sur le fonctionnement général de ces méthodes.
La méthode flatMap() est générique. Elle attend seulement que la valeur de this possède une propriété length et des propriétés à clés entières. Cependant, la valeur retournée par callbackFn doit être un tableau pour être aplatie.
Notez que dans ce cas particulier, l'approche avec flatMap est plus lente que l'approche avec une boucle for — en raison de la création de tableaux temporaires qui doivent être collectés par le ramasse-miettes, et parce que le tableau retourné n'a pas besoin d'être redimensionné fréquemment. Cependant, flatMap peut rester la solution appropriée dans les cas où sa flexibilité et sa lisibilité sont souhaitées.
Bien que ce qui précède aurait pu être obtenu en utilisant simplement map, voici un exemple qui met mieux en valeur l'utilisation de flatMap().
Générons une liste de mots à partir d'une liste de phrases.
On notera que la longueur de la liste obtenue avec flatMap est différente de la longueur de la liste originale.
flatMap peut être utilisé pour ajouter et supprimer des éléments (modifier le nombre d'éléments) lors d'un map. Autrement dit, cela permet de faire correspondre plusieurs éléments à plusieurs éléments (en traitant chaque élément d'entrée séparément), plutôt que toujours un-à-un. En ce sens, cela fonctionne comme l'opposé de filter. Retournez un tableau à 1 élément pour conserver l'élément, un tableau à plusieurs éléments pour en ajouter, ou un tableau à 0 élément pour le supprimer.
L'argument array est utile si vous souhaitez accéder à un autre élément du tableau, en particulier lorsque vous n'avez pas de variable existante qui fait référence au tableau. L'exemple suivant utilise d'abord filter() pour extraire les stations en service puis utilise flatMap() pour créer un nouveau tableau où chaque élément contient une station et la station suivante. Pour la dernière station, il retourne un tableau vide afin de l'exclure du tableau final.
L'argument array n'est pas le tableau en cours de construction — il n'existe aucun moyen d'accéder au tableau en cours de construction depuis la fonction de rappel.
callbackFn ne sera pas appelée pour les trous dans le tableau source car map() ne le fait pas, tandis que flat() ignore les trous dans les tableaux retournés.
La méthode flatMap() lit la propriété length de this puis accède à chaque propriété dont la clé est un entier non négatif inférieur à length. Si la valeur de retour de la fonction de rappel n'est pas un tableau, elle est toujours ajoutée directement au tableau résultat.
| ECMAScript® 2027 Language Specification # sec-array.prototype.flatmap |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 6 nov. 2025 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.