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