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 juillet 2015.
La méthode map() des instances de Array crée un nouveau tableau rempli avec les résultats de l'appel d'une fonction fournie sur chaque élément du tableau appelant.
Une fonction à exécuter pour chaque élément du tableau. Sa valeur de retour est ajoutée comme un élément du 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 map() a été appelée.
thisArg FacultatifUne valeur à utiliser comme this lors de l'exécution de callbackFn. Voir méthodes itératives.
Un nouveau tableau composé des images de la fonction de rappel.
La méthode map() est une méthode itérative. Elle appelle la fonction callbackFn fournie une fois pour chaque élément du tableau et construit un nouveau tableau à partir des résultats. Consultez la section méthodes itératives pour plus d'informations sur le fonctionnement général de ces méthodes.
callbackFn n'est appelée que pour les indices du tableau qui ont des valeurs affectées. Elle n'est pas appelée pour les cases vides dans les tableaux creux.
La méthode map() 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.
Puisque map construit un nouveau tableau, l'appeler sans utiliser le tableau retourné est une mauvaise pratique : utilisez plutôt forEach ou for...of.
Le code suivant prend un tableau de nombres et crée un nouveau tableau contenant les racines carrées des nombres du premier tableau.
Le code suivant prend un tableau d'objets et crée un nouveau tableau contenant les objets nouvellement reformatés.
Il est courant d'utiliser la fonction de rappel avec un seul argument (l'élément parcouru). Certaines fonctions sont également souvent utilisées avec un seul argument, même si elles acceptent des arguments optionnels supplémentaires. Ces habitudes peuvent conduire à des comportements déroutants. Considérez :
On pourrait s'attendre à obtenir [1, 2, 3], mais le résultat réel est [1, NaN, NaN].
parseInt est souvent utilisée avec un argument, mais en accepte deux. Le premier est une expression et le second est la base. La fonction de rappel de Array.prototype.map reçoit 3 arguments : l'élément, l'indice et le tableau. Le troisième argument est ignoré par parseInt — mais pas le second ! C'est la source de la confusion possible.
Voici un exemple concis des étapes d'itération :
Pour résoudre ce problème, définissez une autre fonction qui ne prend qu'un seul argument :
Vous pouvez aussi utiliser la fonction Number, qui ne prend qu'un seul argument :
Voir le sujet de discussion Un problème d'argument optionnel en JavaScript (angl.) par Allen Wirfs-Brock.
Lorsque undefined ou rien n'est retourné, le tableau résultant contient undefined. Si vous souhaitez supprimer l'élément à la place, chaînez une méthode filter(), ou utilisez la méthode flatMap() et retournez un tableau vide pour signifier la suppression.
La fonction de rappel peut avoir des effets de bord.
Ce n'est pas recommandé, car les méthodes de copie sont à utiliser de préférence avec des fonctions pures. Dans ce cas, il vaut mieux parcourir le tableau deux fois.
Parfois, ce schéma va à l'extrême et la seule chose utile que fait map() est de provoquer des effets de bord.
Comme mentionné précédemment, c'est une mauvaise pratique. Si vous n'utilisez pas la valeur de retour de map(), utilisez forEach() ou une boucle for...of à la place.
Ou, si vous souhaitez créer un nouveau tableau :
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 valeurs positives puis utilise map() pour créer un nouveau tableau où chaque élément est la moyenne de ses voisins et de lui-même.
L'argument array n'est pas le tableau en cours de construction — il n'est pas possible d'accéder au tableau en cours de construction depuis la fonction de rappel.
Un tableau creux reste creux après map(). Les indices des cases vides restent vides dans le tableau retourné, et la fonction de rappel ne sera pas appelée pour elles.
La méthode map() 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.
Cet exemple montre comment parcourir une collection d'objets collectés par querySelectorAll. Cela fonctionne car querySelectorAll retourne un NodeList (qui est une collection d'objets). Dans ce cas, on retourne toutes les valeurs des option sélectionnées à l'écran :
Vous pouvez aussi utiliser Array.from() pour transformer elems en tableau, puis accéder à la méthode map().
| ECMAScript® 2027 Language Specification # sec-array.prototype.map |
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.