Set
Ensembles en JavaScript: Set
Pour plus d'information, vous pouvez vous référer à cette page: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Set
Les Set sont des ensembles, c'est à dire qu'on y stocke un ensemble d'objet. En revanche, chaque objet ne peut y être qu'en un seul exemplaire.
Créer un Set en JavaScript
Déclaration sans valeur
const monSetSansValeur = new Set();
Déclaration avec valeurs
const monSetAvecValeur = new Set([ valeur1, valeur2, valeur3]);
Ajouter des valeurs
Si une variable monSet est un Set:
monSet.add( valeurAAjouter);
Les valeurs peuvent être de types ou des objets différents dans un même Set: une String, un Number, etc..
Exemple:
Voici un exemple de Set avec deux cours stockés dans la variable coursProg
const coursProg= new Set();
coursProg.add("Langage du web");
coursProg.add( "Algorithmique");
On aurait pu écrire:
const coursProg= new Set(["Langage du web", "Algorithmique"]);
Voici un exemple de Set dans la variable prenoms:
const prenoms= new Set();
prenoms.add("Lauren");
prenom.add( "Jane");
prenoms.add("Lee");
On aurait pu écrire:
const prenoms= new Set(["Lauren", "Jane", "Lee"]);
Exercice 1 : Création d'un Set
Question 1: Créer en Javascript un Set menu avec le nom de 5 plats deux manières: avec et sans add
const menu=new Set();
menu.add("Raclette");
menu.add("Soupe de potiron");
menu.add("Pates bolognese");
menu.add("Salade de tomates");
menu.add("Crème brulée");
et :
const menu=new Set( [ "Raclette", "Soupe de potiron", "Pates bolognese", "Salade de tomates", "Crème brulée"];
Question 2: Créer en Javascript un Set trajet avec 3 kilométrages et trois noms de trajets, de deux manière: avec et sans add
const trajet=new Set();
trajet.add("Campus");
trajet.add("Supermarché");
trajet.add("Mer");
trajet.add(23.6);
trajet.add(0.3);
trajet.add(1.2);
ou
const trajet=new Set(["Campus", "Supermarché", "Mer", 23.6, 0.3, 1.2] );
Récupérer les éléments d'un Set en Javascript
Récupérer tous les éléments
Syntaxe
On utiliser une boucle for avec une variable (par exemple qui s'appelle element). Cet élement contient successivement toutes les valeurs des valeurs de l'ensemble Set. Par exemple pour un Set dans une variable monSet:
for (let element of monSet)
{
let monElementChaqueTour= element;
}
Exemple: Afficher tous les éléments d'un set
Pour afficher tous les cours d'un set coursProg les uns après les autres:
const coursProg= new Set();
coursProg.add("Langage du web");
coursProg.add( "Algorithmique");
for (let element of coursProg)
{
alert(element);
}
Pour affcher tous les prénoms du Set prenoms les uns après les autres:
const prenoms= new Set();
prenoms.add("Lauren");
prenom.add( "Jane");
prenoms.add("Lee");
for (let element of prenoms)
{
alert(element);
}
Afficher tous les éléments d'une Map
Si une variable monSet est un Set :
Afficher un par un:
for (let element of monSet)
{
alert(element);
}
Afficher tout :
let monSetComplet="";
for (let element of monSet) {
monSetComplet= element+" ";
}
alert(monSetComplet);
Exercice 2 : Récuperer les valeurs d'un Set
Question 1: Afficher tous les plats d'une Map menu avec le nom de 5 plats, un par un
const menu=new Set();
menu.add("Raclette");
menu.add("Soupe de potiron");
menu.add("Pates bolognese");
menu.add("Salade de tomates");
menu.add("Crème brulée");
for (let element of menu)
{
alert( element);
}
Question 2: Afficher tous les plats d'une Map menu avec le nom de 5 plats en une seule fois
const menu=new Set();
menu.add("Raclette");
menu.add("Soupe de potiron");
menu.add("Pates bolognese");
menu.add("Salade de tomates");
menu.add("Crème brulée");
let monSetComplet="";
for (let element of menu) {
monSetComplet= element+" ";
}
alert(monSetComplet);
Question 3: Pour tous les éléments d'un Set trajet, verifier si c'est un nombre et additionner tous les nombres entre eux
Comment vérifier qu'une variable maVariable est un nom?
isNaN( maVariable) == false
!isNaN( maVariable) == true
const trajet=new Set();
trajet.add("Campus");
trajet.add("Supermarché");
trajet.add("Mer");
trajet.add(23.6);
trajet.add(0.3);
trajet.add(1.2);
let addition=0;
for (let element of trajet)
{
if ( !isNaN( element) )
{
addition+=element;
}
}
alert(addition);
Ajouter un élément ou supprimer un élément
Pour ajouter un élement à la fin d'une variable monSet qui est un Set, on utilise add tel que vu précédemment:
monSet.add( valeur);
Pour supprimer un élement element d'un set monSet:
monSet.delete(element);
Pour "vider"un set monSet de tous ses éléments:
monSet.clear();
Exercice 3 : Ajouter et supprimer les valeurs d'une Map
Question 1: Ajouter un sixième plat avec son prix dans une map menu avec 5 plats
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");
Question 2: Enlever un plat du menu dans une Map menu
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");
Question 3: Effacer toutes le valeur de la Maps uneCertaineDistance et rajouter plusieurs nouveau couples trajets-kilométrage
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);
Modifier des valeurs
Syntaxe
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");
Exemples
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
Exercice 4 : Modifier les valeurs d'une Map
Question 1: Modifier un des plats d'une Map menu avec le nom de 5 plats par la valeur "en rupture" à la place du prix
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");
Question 2: changer un nom d'un étudiant, un prénom d'un autre et l'ensemble nom prénom d'un autre.
let etudiants= [ ["Dupont", "Martine" ], ["Doe", "Jane" ], ["Smith", "Williams" ]]
etudiants[0][0]=["Nouveau Nom seulement"];
etudiants[2][1]=["Nouveau Prénom Nom seulement"];
etudiants[1]=["Nouveau Nom", "Nouveau prénom"];
Autres points sur les Maps
Modifier la clef
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).
Syntaxe
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");
Exemples
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
Cloner une Map
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);
Verifier si un clef est présente dans une Map
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