Map.getOrInsert() (Upsert)
JavaScript 🟢 JuniorDéfinition
Proposition « Upsert » (Stage 4, listée par TC39 pour ES2026) : Map et WeakMap gagnent getOrInsert(clé, valeur) qui renvoie la valeur existante ou insère puis renvoie la valeur par défaut, et getOrInsertComputed(clé, fn) qui ne calcule la valeur que si la clé manque. Livrée dans V8 14.6, donc dans Node.js 26 (5 mai 2026) ; disponible dans les navigateurs majeurs depuis février 2026.
Analogie
Le porte-manteau du restaurant : si votre crochet existe on vous le rend, sinon on en installe un et on vous le donne.
Exemple de code
const parVille = new Map();
for (const client of clients) {
// Avant : if (!m.has(k)) m.set(k, []); m.get(k).push(...)
parVille.getOrInsert(client.ville, []).push(client);
}
// Calcul coûteux seulement si absent
const cache = new Map();
const r = cache.getOrInsertComputed(url, () => calculerLourd(url));
Cas d'usage
Regroupements (multimap), caches mémoïsés, compteurs : le motif has/get/set en une ligne.
Anti-pattern
Utiliser getOrInsert avec une valeur par défaut coûteuse à construire : elle est créée même si la clé existe ; prendre getOrInsertComputed.
Termes liés
Sources
Fiche mise à jour le 2026-09-27