Jusqu’à présent, nous avons découvert les structures de données complexes suivantes :
- Les objets sont utilisés pour stocker des collections de clés.
- Les tableaux sont utilisés pour stocker des collections ordonnées.
Mais ce n’est pas suffisant pour la vie réelle. C’est pourquoi Map et Set existent également.
Map
Une Map est une collection d’éléments de données saisis, tout comme un Object. Mais la principale différence est que Map autorise les clés de tout type.
Voici les méthodes et les propriétés d’une Map :
new Map()– créer la map.map.set(key, value)– stocke la valeur par la clé.map.get(key)– renvoie la valeur par la clé,undefinedsikeyn’existe pas dans la map.map.has(key)– retournetruesi lakeyexiste,falsesinon.map.delete(key)– supprime l’élément (la paire clé/valeur) par la clé.map.clear()– supprime tout de la map.map.size– renvoie le nombre d’éléments actuel.
Par exemple :
let map = new Map();
map.set('1', 'str1'); // une clé de type chaîne de caractère
map.set(1, 'num1'); // une clé de type numérique
map.set(true, 'bool1'); // une clé de type booléenne
// souvenez-vous, dans un `Object`, les clés sont converties en chaîne de caractères
// alors que `Map` conserve le type d'origine de la clé,
// c'est pourquoi les deux appels suivants retournent des valeurs :
alert( map.get(1) ); // 'num1'
alert( map.get('1') ); // 'str1'
alert( map.size ); // 3
Au travers de cet exemple nous pouvons voir, qu’à la différence des Objects, les clés ne sont pas converties en chaîne de caractère.
Il est donc possible d’utiliser n’importe quel type.
map[key] n’est pas la bonne façon d’utiliser un MapBien que map[key] fonctionne également, par exemple nous pouvons définir map[key] = 2, cela traite map comme un objet JavaScript simple, ce qui implique toutes les limitations correspondantes (uniquement des clés chaîne de caractères/symbol etc.).
Nous devons donc utiliser les méthodes de