JavaScriptTableaux

Array.prototype.map()

Crée un nouveau tableau avec les résultats de l’appel d’une fonction pour chaque élément.

Renvoie
Un nouveau tableau avec les résultats de la fonction, de même longueur que l’original.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
const numbers = [1, 2, 3, 4]
const doubled = numbers.map((n) => n * 2)

console.log(doubled)
console.log(numbers)
Console
[2, 4, 6, 8]
[1, 2, 3, 4]

Définition et utilisation

#

La méthode map() parcourt les éléments du tableau les uns après les autres, appelle la fonction donnée pour chacun et construit un nouveau tableau de même longueur à partir des résultats. Le tableau d’origine reste intact.

C’est l’outil de base pour transformer des données : convertir des prix en prix taxés, des objets utilisateurs en simples prénoms, ou des données d’une API en éléments de liste dans l’interface.

Si vous n’avez pas besoin d’un nouveau tableau mais voulez simplement faire quelque chose pour chaque élément (par exemple l’afficher dans la console), utilisez forEach(). Utiliser map() sans se servir du résultat est une erreur fréquente.

Syntaxe

#
Syntaxe
array.map(callbackFn)
array.map(callbackFn, thisArg)

Paramètres

#
  • callbackFn

    function (element, index, array)

    Fonction appelée pour chaque élément. Elle reçoit l’élément courant, son indice et le tableau entier. Ce qu’elle retourne va dans le nouveau tableau.
  • thisArg

    optionnel

    Valeur utilisée comme this à l’intérieur de callbackFn. Sans effet avec les fonctions fléchées.

Plus d’exemples

#
Extraire un seul champ d’objets
JavaScript
const students = [
  { name: 'Léa', points: 120 },
  { name: 'Lucas', points: 95 },
  { name: 'Emma', points: 140 }
]

const names = students.map((student) => student.name)
console.log(names)
Console
['Léa', 'Lucas', 'Emma']
Utilisation de l’indice
JavaScript
const tasks = ['HTML', 'CSS', 'JavaScript']
const numbered = tasks.map((task, index) => `${index + 1}. ${task}`)

console.log(numbered.join('\n'))
Console
1. HTML
2. CSS
3. JavaScript
Piège : parseInt comme fonction
JavaScript
console.log(['1', '2', '3'].map(parseInt))
console.log(['1', '2', '3'].map(Number))
Console
[1, NaN, NaN]
[1, 2, 3]

map() passe aussi l’indice à la fonction, et parseInt traite le second argument comme la base numérique. D’où les NaN. Il est plus sûr d’utiliser Number ou (s) => parseInt(s, 10).

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • La fonction passée à map() doit retourner une valeur. Un return oublié dans des accolades donnera un tableau plein de undefined.
  • Ne modifiez pas les objets d’origine à l’intérieur de map(). Retournez-en de nouveaux : { ...user, active: true }.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.