Ensemble JavaScript et WeakSet

Dans ce didacticiel, vous en apprendrez davantage sur les ensembles JavaScript et les ensembles WeakSets à l'aide d'exemples.

Le JavaScript ES6 a introduit deux nouvelles structures de données, à savoir Setet WeakSet.

L'ensemble est similaire à un tableau qui nous permet de stocker plusieurs éléments tels que des nombres, des chaînes, des objets, etc. Cependant, contrairement à un tableau, un ensemble ne peut pas contenir de valeurs en double.

Créer un ensemble JavaScript

Pour créer un Set, vous devez utiliser le new Set()constructeur. Par exemple,

 // create Set const set1 = new Set(); // an empty set console.log(set1); // Set () // Set with multiple types of value const set2 = new Set((1, 'hello', (count : true))); console.log(set2); // Set (1, "hello", (count: true))

Lorsque des valeurs dupliquées sont transmises à un Setobjet, les valeurs dupliquées sont exclues.

 // Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)

Éléments de l'ensemble d'accès

Vous pouvez accéder aux Setéléments en utilisant la values()méthode et vérifier s'il y a un élément à l'intérieur en Setutilisant has()method. Par exemple,

 const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)

Vous pouvez utiliser la has()méthode pour vérifier si l'élément est dans un ensemble. Par exemple,

 const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));

Ajout de nouveaux éléments

Vous pouvez ajouter des éléments à un ensemble à l'aide de la add()méthode. Par exemple,

 const set = new Set((1, 2)); console.log(set.values()); // adding new elements set.add(3); console.log(set.values()); // adding duplicate elements // does not add to Set set.add(1); console.log(set.values());

Production

 Définir l'itérateur (1, 2) Définir l'itérateur (1, 2, 3) Définir l'itérateur (1, 2, 3)

Suppression d'éléments

Vous pouvez utiliser le clear()et la delete()méthode pour supprimer des éléments d'un ensemble.

La delete()méthode supprime un élément spécifique d'un fichier Set. Par exemple,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // removing a particular element set.delete(2); console.log(set.values()); // Set Iterator (1, 3)

La clear()méthode supprime tous les éléments d'un fichier Set. Par exemple,

 const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // remove all elements of Set set.clear(); console.log(set.values()); // Set Iterator ()

Itérer les ensembles

Vous pouvez parcourir les éléments Set en utilisant la boucle for… of ou la méthode forEach (). Les éléments sont accessibles dans l'ordre d'insertion. Par exemple,

 const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )

Production

 1 2 3

JavaScript WeakSet

Le WeakSet est similaire à un Set. Cependant, WeakSet ne peut contenir que des objets alors qu'un Set peut contenir n'importe quel type de données tels que des chaînes, des nombres, des objets, etc. Par exemple,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () let obj = ( message: 'Hi', sendMessage: true ) // adding object (element) to WeakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((message: "Hi", sendMessage: true))

Lorsque vous essayez d'ajouter d'autres types de données en plus des objets, WeakSet génère une erreur. Par exemple,

 // trying to add string to WeakSet weakSet.add('hello'); // throws error // TypeError: Attempted to add a non-object key to a WeakSet console.log(weakSet);

Méthodes WeakSet

WeakSets ont des méthodes add(), delete()et has(). Par exemple,

 const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () const obj = (a:1); // add to a weakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((a: 1)) // check if an element is in Set console.log(weakSet.has(obj)); // true // delete elements weakSet.delete(obj); console.log(weakSet); // WeakSet ()

Les WeakSets ne sont pas itérables

Contrairement aux ensembles, les WeakSets ne sont pas itérables. Par exemple,

 const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )

Opérations d'ensemble mathématiques

En JavaScript, Set ne fournit pas de méthodes intégrées pour effectuer des opérations mathématiques telles que l'union, l'intersection, la différence, etc. Cependant, nous pouvons créer des programmes pour effectuer ces opérations.

Exemple: définir l'opération d'union

 // perform union operation // contain elements of both sets function union(a, b) ( let unionSet = new Set(a); for (let i of b) ( unionSet.add(i); ) return unionSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = union(setA, setB); console.log(result);

Production

 Set ("pomme", "mangue", "orange", "raisin", "banane")

Exemple: définir l'opération d'intersection

 // perform intersection operation // elements of set a that are also in set b function intersection(setA, setB) ( let intersectionSet = new Set(); for (let i of setB) ( if (setA.has(i)) ( intersectionSet.add(i); ) ) return intersectionSet; ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = intersection(setA, setB); console.log(result);

Production

 Set ("pomme")

Exemple: opération de réglage de la différence

 // perform difference operation // elements of set a that are not in set b function difference(setA, setB) ( let differenceSet = new Set(setA) for (let i of setB) ( differenceSet.delete(i) ) return differenceSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = difference(setA, setB); console.log(result);

Production

 Set ("mangue", "orange")

Exemple: définir le fonctionnement du sous-ensemble

 // perform subset operation // true if all elements of set b is in set a function subset(setA, setB) ( for (let i of setB) ( if (!setA.has(i)) ( return false ) ) return true ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('apple', 'orange')); let result = subset(setA, setB); console.log(result);

Production

 vrai

JavaScript Setset WeakSetsont été introduits dans ES6 . Certains navigateurs peuvent ne pas prendre en charge leur utilisation. Pour en savoir plus, consultez la section Prise en charge des ensembles JavaScript et Prise en charge des WeakSets JavaScript.

Articles intéressants...