JavaScript Fundamentals

Objets JavaScript : Objets vs. l’objet Map

Spread the love

Hashmaps JavaScript : Objets vs. l’objet Map

JavaScript ne possède pas d’équivalent direct de « HashMap » comme certains autres langages. Cependant, nous pouvons obtenir des fonctionnalités similaires en utilisant deux approches principales : les objets JavaScript simples et l’objet Map intégré. Cet article explore les deux, en comparant leurs forces et leurs faiblesses pour vous aider à choisir la meilleure approche en fonction de vos besoins.

Table des matières

Utiliser les objets comme Hashmaps

Les objets JavaScript peuvent fonctionner comme des hashmaps simples. Ils utilisent des clés de type chaîne pour accéder aux valeurs associées. Cette approche est simple mais présente des limitations.

Exemple :


const myHashMap = {}; // Créer un objet vide

// Insérer des paires clé-valeur
myHashMap.apple = 1;
myHashMap.banana = 2;
myHashMap.cherry = 3;

// Accéder aux valeurs
console.log(myHashMap.banana); // Sortie : 2

// Vérifier si une clé existe
console.log('apple' in myHashMap); // Sortie : true

// Supprimer une paire clé-valeur
delete myHashMap.banana;

// Itérer sur les paires clé-valeur (Remarque : l’ordre n’est pas garanti)
for (const key in myHashMap) {
  console.log(key, myHashMap[key]);
}

Avantages :

  • Simple et familier aux développeurs JavaScript.
  • Aucune dépendance externe.

Inconvénients :

  • Les clés sont limitées aux chaînes (ou aux valeurs qui se convertissent implicitement en chaînes).
  • Aucune propriété de taille intégrée ; vous devez suivre la taille manuellement.
  • Manque de méthodes intégrées telles que get, set, has, etc.
  • L’ordre des clés n’est pas garanti.

Utiliser l’objet Map

L’objet Map (introduit en ES6) offre une solution plus robuste. Il prend en charge n’importe quel type de données comme clé, évite les problèmes de conversion de type et fournit des méthodes intégrées pour une manipulation efficace.

Exemple :


const myMap = new Map();

// Insérer des paires clé-valeur
myMap.set("apple", 1);
myMap.set(123, "number"); // Nombre comme clé
myMap.set({ a: 1 }, "object"); // Objet comme clé

// Accéder aux valeurs
console.log(myMap.get("apple")); // Sortie : 1
console.log(myMap.get(123));     // Sortie : "number"

// Vérifier si une clé existe
console.log(myMap.has("apple")); // Sortie : true

// Supprimer une paire clé-valeur
myMap.delete("apple");

// Obtenir la taille
console.log(myMap.size); // Sortie : 2

// Itérer sur les paires clé-valeur (l’ordre est préservé)
for (const [key, value] of myMap) {
  console.log(key, value);
}

Avantages :

  • Prend en charge n’importe quel type de données comme clé.
  • Fournit des méthodes intégrées (set, get, has, delete, size).
  • Itération efficace avec les boucles for...of.
  • Préserve l’ordre d’insertion.

Inconvénients :

  • Nécessite une compatibilité ES6 (bien que des polyfills soient disponibles).

Conclusion

Bien que les objets JavaScript simples puissent suffire pour un comportement de type hashmap simple, l’objet Map est généralement recommandé pour ses fonctionnalités et son efficacité supérieures. Sauf si vous êtes fortement limité par la compatibilité du navigateur, Map est le choix préféré pour la plupart des projets JavaScript modernes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *