Map : méthode getOrInsertComputed()
Baseline
2026
Newly available
Depuis February 2026, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La méthode getOrInsertComputed() des instances de Map retourne la valeur correspondant à la clé définie dans cette Map. Si la clé n'est pas présente, elle insère une nouvelle entrée avec la clé et une valeur par défaut calculée à partir d'une fonction de rappel donnée, puis retourne la valeur insérée.
Utilisez cette méthode à la place de Map.prototype.getOrInsert() lorsque la valeur par défaut est coûteuse à calculer et que vous souhaitez éviter de la calculer sauf si cela est réellement nécessaire.
Exemple interactif
const map = new Map([["toto", "truc"]]);
const defaultCreator = (key) => `par défaut pour ${key}`;
console.log(map.getOrInsertComputed("toto", defaultCreator));
// Sortie attendue : "truc"
console.log(map.getOrInsertComputed("tata", defaultCreator));
// Sortie attendue : "par défaut pour tata"
Syntaxe
getOrInsertComputed(key, callback)
Paramètres
key-
La clé de l'élément à retourner depuis l'objet
Map. Les clés des objets sont comparées par référence, et pas par valeur. callback-
Une fonction qui retourne la valeur à insérer et à retourner si la clé n'est pas déjà présente dans l'objet
Map. La fonction est appelée avec l'argument suivant :key-
La même clé qui a été passée à
getOrInsertComputed().
Valeur de retour
La valeur associée à la clé définie dans l'objet Map. Si la clé n'est pas trouvée, le résultat de callback(key) est inséré et retourné.
Exceptions
TypeError-
Levée si
callbackn'est pas appelable.
Exemples
>Éviter le calcul inutile de la valeur par défaut
Lors de l'utilisation de Map.prototype.getOrInsert(), la valeur par défaut est calculée à chaque fois, même si elle n'est pas nécessaire. Avec getOrInsertComputed(), la valeur par défaut n'est calculée que lorsque cela est nécessaire.
const map = new Map([["toto", "truc"]]);
const createurParDefaut = (key) => {
console.log(`Créer la valeur par défaut pour ${key}`);
return `valeur par défaut pour ${key}`;
};
map.getOrInsert("toto", createurParDefaut("toto")); // Affiche "Créer la valeur par défaut pour toto"
map.getOrInsertComputed("toto", createurParDefaut); // N'affiche rien
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-map.prototype.getorinsertcomputed> |