Map

Une collection de paires clé-valeur dans laquelle la clé peut être n’importe quelle valeur, et où l’ordre d’ajout est conservé.

Renvoie
Un nouvel objet Map.
Sur cette page

Exemple

#
JavaScript
const scores = new Map()

scores.set('Léa', 120).set('Lucas', 95)
scores.set('Léa', 150)

console.log(scores.get('Léa'))
console.log(scores.has('Emma'))
console.log(scores.size)
console.log(scores)
Console
150
false
2
Map(2) { 'Léa' => 150, 'Lucas' => 95 }

Définition et utilisation

#

Map stocke des paires clé-valeur, comme un objet ordinaire, mais avec plusieurs avantages importants. La clé peut être n’importe quoi : un nombre, un objet ou une fonction, pas seulement une chaîne de caractères. Vous lisez le nombre de paires directement depuis la propriété size, et l’ordre de parcours correspond toujours à l’ordre d’ajout.

Les méthodes de base sont set(clé, valeur) pour écrire, get(clé) pour lire, has(clé) pour vérifier, delete(clé) pour supprimer et clear() pour vider toute la map. La méthode set() renvoie la map, donc les appels peuvent être chaînés.

Vous parcourez une map avec une boucle for...of, qui renvoie des paires [clé, valeur], ou avec la méthode forEach(). Les méthodes keys(), values() et entries() renvoient des itérateurs, faciles à transformer en tableau : [...map.keys()].

Choisissez Map quand vous ajoutez et supprimez souvent des éléments, ou quand les clés ne sont pas des chaînes. Laissez l’objet ordinaire pour les données à la forme fixe, comme { name, level }, et pour l’écriture au format JSON.

Syntaxe

#
Syntaxe
new Map()
new Map(iterable)

map.set(key, value)
map.get(key)
map.has(key)
map.delete(key)
map.clear()
map.size

Paramètres

#
  • iterable

    optionnel

    Un tableau de paires [clé, valeur], ou un autre objet itérable de paires, par ex. le résultat de Object.entries().

Plus d’exemples

#
Un objet comme clé
JavaScript
const léa = { name: 'Léa' }
const lucas = { name: 'Lucas' }

const lastSeen = new Map([
  [léa, 'hier'],
  [lucas, "aujourd'hui"]
])

console.log(lastSeen.get(léa))
console.log(lastSeen.get({ name: 'Léa' }))
Console
hier
undefined

Les clés objets sont comparées par référence. Le nouvel objet { name: "Léa" } a la même apparence, mais ce n’est pas le même objet que léa.

Parcourir une map et la convertir en objet
JavaScript
const cart = new Map([
  ['Cours HTML', 49],
  ['Cours CSS', 59]
])

for (const [course, price] of cart) {
  console.log(`${course}: ${price} €`)
}

console.log([...cart.keys()])
console.log(Object.fromEntries(cart))
Console
Cours HTML: 49 €
Cours CSS: 59 €
['Cours HTML', 'Cours CSS']
{ 'Cours HTML': 49, 'Cours CSS': 59 }
Compteur d’occurrences
JavaScript
const answers = ['B', 'A', 'B', 'C', 'B']
const counts = new Map()

for (const answer of answers) {
  counts.set(answer, (counts.get(answer) ?? 0) + 1)
}

console.log(counts)
Console
Map(3) { 'B' => 3, 'A' => 1, 'C' => 1 }

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

#
  • JSON.stringify() transforme une map en objet vide {}. Avant de l’enregistrer, convertissez-la avec Object.fromEntries(map) ou [...map].
  • N’écrivez pas de données avec map[clé] = valeur. Cela crée une simple propriété d’objet, que get(), has() et size ne voient pas.
  • Pour compter des occurrences, le motif map.set(k, (map.get(k) ?? 0) + 1) est court et lisible.

Entrées associées

#

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