Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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

js
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 callback n'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.

js
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

Compatibilité des navigateurs

Voir aussi