Pour plus d'information, vous pouvez vous référer à cette page: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Map
Les maps sont des dictionnaires, on associe une clef à une valeur comme on associe un mot d'un dictionnaire à une définition. La différence avec les Array est que l'on accède à une case par la clef au lieu de l'index.
Par exemple, si j'ai les couples (clef, serrure) (chat, chien) (imagination, créativité), je peux récupérer "serrure" avec "clef", je peux récupérer "chien" avec "chat", et "créativité" avec "imagination".
const myMap = new Map();
Si une variable myMap est une Map:
myMap.set(clef, valeur);
Voici un exemple de maps avec deux cours stocké dans la variable coursProg
const coursProg= new Map();
coursProg.set("cours1", "Langage du web");
coursProg.set("cours2", "Algorithmique");
Voici un exemple de Map où le nom permet de récupérer le prénom stocké dans la variable prenoms:
const prenoms= new Map();
prenoms.set("Thevin", "Lauren");
prenom.set("Doe", "Jane");
prenoms.set("Smith", "Lee");
const menu=new Map();
menu.set("Raclette", "13,50 euros");
menu.set("Soupe de potiron", "8 euros");
menu.set("Pates bolognese", "11 euros");
menu.set("Salade de tomates", "7 euros");
menu.set("Crème brulée", "6,50 euros");
const distance=new Map();
distance.set("Campus", 25);
distance.set("Supermarché", 0.3);
distance.set("Mer",1.2);
Si une variable maVariable contient une Map avec une clef maClef, on récupère la valeur comme ceci:
maVariable.get(maClef);
Pour récupérer le nom du cours 2:
const coursProg= new Map();
coursProg.set("cours1", "Langage du web");
coursProg.set("cours2", "Algorithmique");
coursProg.get("cours2");
Pour récupérer le prénom à partir du nom de famille et l'afficher:
const prenoms= new Map();
prenoms.set("Thevin", "Lauren");
prenoms.set("Doe", "Jane");
prenoms.set("Smith", "Lee");
alert(prenoms.get("Thevin"));
let prenomDoe=prenoms.get("Doe");
alert(prenomDoe);
Si une variable myMap est une Map:
for (const [key, value] of myMap) {
alert (key+" "+ value);
}
let maCollectionComplete="";
for (const [key, value] of myMap) {
maCollectionComplete+= key+" "+ value+" \n";
}
alert(maCollectionComplete);
const menu=new Map();
menu.set("Raclette", "13,50 euros");
menu.set("Soupe de potiron", "8 euros");
menu.set("Pates bolognese", "11 euros");
menu.set("Salade de tomates", "7 euros");
menu.set("Crème brulée", "6,50 euros");
alert(menu.get("Soupe de potiron"))
const menu=new Map();
menu.set("Raclette", "13,50 euros");
menu.set("Soupe de potiron", "8 euros");
menu.set("Pates bolognese", "11 euros");
menu.set("Salade de tomates", "7 euros");
menu.set("Crème brulée", "6,50 euros");
let maCollectionComplete="";
for (const [key, value] of menu) {
maCollectionComplete+= key+" "+ value+" \n";
}
alert(maCollectionComplete);
const distance=new Map();
distance.set("Campus", 25);
distance.set("Supermarché", 0.3);
distance.set("Mer",1.2);
let uneCertaineDistance=distance.get("Mer");
Pour ajouter un élement à la fin d'une variable myMap qui est une Map, on utilise set tel que vu précédemment:
myMap.set(clef, valeur);
Pour supprimer un élement d'une Map myMap avec une clef clef:
myMap.delete(clef);
Pour "vider"une Map myMap de tous ses éléments:
myMap.clear();
const menu=new Map();
menu.set("Raclette", "13,50 euros");
menu.set("Soupe de potiron", "8 euros");
menu.set("Pates bolognese", "11 euros");
menu.set("Salade de tomates", "7 euros");
menu.set("Crème brulée", "6,50 euros");
menu.set("Omelette", "5 euros");
const menu=new Map();
menu.set("Raclette", "13,50 euros");
menu.set("Soupe de potiron", "8 euros");
menu.set("Pates bolognese", "11 euros");
menu.set("Salade de tomates", "7 euros");
menu.set("Crème brulée", "6,50 euros");
menu.delete("Raclette");
const distance=new Map();
distance.set("Campus", 25);
distance.set("Supermarché", 0.3);
distance.set("Mer",1.2);
distance.clear();
distance.set("Travail", 25);
distance.set("Point de Vue", 0.3);
distance.set("Footing",1.2);
Pour modifier des valeurs, il suffit de faire un set avec une clef existante. Par exemple, pour une Map uneMap qui a une clef clefNumeroUn, on fera :
uneMap.set("clefNumeroUn", "nouvelle valeur de la clef numéro1");
Pour modifier la valeur du prénom avec le nom "Thévin":
const prenoms= new Map();
prenoms.set("Thevin", "Lauren"); //valeur 1: Lauren
prenoms.set("Doe", "Jane");
prenoms.set("Smith", "Lee");
prenoms.set("Thevin", "Simone"); //valeur 2: Simone
const menu=new Map();
menu.set("Raclette", "13,50 euros");
menu.set("Soupe de potiron", "8 euros");
menu.set("Pates bolognese", "11 euros");
menu.set("Salade de tomates", "7 euros");
menu.set("Crème brulée", "6,50 euros");
menu.set("Pates bolognese", "en rupture");
const etudiants= new Map();
etudiants.set("Dupont", "Martine");
etudiants.set("Doe", "Jane" );
etudiants.set("Smith", "Williams");
etudiants.set("Dooe", etudiants.get("Doe"));
etudiants.delete("Doe");
etudiants.set("Dupont", "Lila");
etudiants.set("Smithy", "Guillaume");
etudiants.delete("Smith");
Techniquement, on ne modifie pas la clef. Par exemple, pour modifier (clef1, valeur) par (clef2, valeur) il faut : ajouter avec un set une nouvelle association (clef2, valeur), puis supprimer (clef1, valeur).
Pour modifier des valeurs, il suffit de faire un set avec une clef existante. Par exemple, pour une Map uneMap qui a une clef clefNumeroUn, on fera :
uneMap.set("clef1", "valeur de la clef numéro1");
uneMap.set("clef2", uneMap.get("clef1");
uneMap.delete("clef1");
Pour modifier la valeur du prénom avec le nom "Thévin":
const prenoms= new Map();
prenoms.set("Thevin", "Lauren"); //clef 1: Thevin
prenoms.set("Doe", "Jane");
prenoms.set("Smith", "Lee");
prenoms.set("Niveht", prenoms.get("Thevin"); // j'insère une association avec une nouvelle clef et la même valeur
prenoms.delete("Thevin"); // j'efface l'association précédente
Pour cloner une map, il suffit d'utiliser new Map( ) avec la Map à cloner en argument.
Imaginons une Map maMap,
const cloneDeMaMap = new Map(maMap);
Pour verifier si une Map uneMap a une clef clefNumeroUn, on fera :
uneMap.has(clefNumeroUn); //renvoie true si cette clef existe dans cette Map, et renvoie false sinon
Pour connaitre la taille d'un Map uneMap, c'est à dire le nombre d'association clef/valeur, on utilise size :
uneMap.size; //renvoie la taille de uneMap
`