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.
Exemple
#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)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
#new Map()
new Map(iterable)
map.set(key, value)
map.get(key)
map.has(key)
map.delete(key)
map.clear()
map.sizeParamètres
#iterable
optionnel
Un tableau de paires[clé, valeur], ou un autre objet itérable de paires, par ex. le résultat deObject.entries().
Plus d’exemples
#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' }))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.
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))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)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 avecObject.fromEntries(map)ou[...map].- N’écrivez pas de données avec
map[clé] = valeur. Cela crée une simple propriété d’objet, queget(),has()etsizene voient pas. - Pour compter des occurrences, le motif
map.set(k, (map.get(k) ?? 0) + 1)est court et lisible.
Entrées associées
#- SetUne collection de valeurs uniques : chaque valeur ne peut apparaître qu’une fois dans l’ensemble.
- WeakMapUne map avec des objets comme clés, qui ne les retient pas en mémoire : l’entrée disparaît avec l’objet inutilisé.
- Object.entries()Renvoie un tableau des paires [clé, valeur] d’un objet.
- Object.fromEntries()Crée un objet à partir d’une liste de paires [clé, valeur].
- for...ofParcourt les valeurs successives d’un objet itérable : tableau, chaîne, Map, Set et autres.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.