Table des matières

Le Tutoriel de ECMAScript Set Collection

View more Tutorials:

1- Collections - Set

ECMAScript 6 introduit les 2 nouvelles structures de données telles que Map & Set. Ils font partie de la collection du  ECMAScript (Collections Framework).

  • Maps - Cette structure de données vous permet de stocker la "clé / valeur" (Key/Value). Et vous pouvez accéder à la valeur (value) via la clé (key) ou mettre à jour une nouvelle valeur correspondant à une clé.
  • ​​​​​​​Sets - Cette structure de données stocke une liste d'éléments qui n'autorise pas les copies ni des éléments d'indexation.
Dans cette publication, je vous donnerai des instructions de  Set.
Voir plus :
  • TODO Link!

Set

La  Set est une structure de données instroduite dans le  ECMAScript6, ci-dessous les caractéristiques de  Set :
  • Set est une liste d'éléments qui ne permettant pas la répétition.
  • Set ne répertorie pas des éléments.
  • Set est une liste ordonnée (Ordered), cela signifie qu'un élément qui est ajouté en premier viendra en premier et un élément qui est ajouté en second viendra en second.
Constructors:
Créez l'objet  Set via le  constructor de la classe  Set :
new Set( [iterable] )
Des paramètres :
  • iterable - Si cet objet est passé (pass) au constructor de Set, tous ses éléments seront ajoutés au Set. À l'inverse, si vous ne spécifiez pas ce paramètre, ou ses valeurs sont null l'objet Set créé sera vide (empty).
Properties:
set-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya' }
Propriété Description
Taille Cette Property renvoie le nombre de l'élément dans l'objet Set.
set-size-example.js
// Create a Set from an Array
var fruits = new Set( ['Apple','Banana','Papaya'] );

var size = fruits.size;

console.log(size); // 3

for..of

Vous pouvez utiliser la boucle  for...of pour répéter les éléments de  Set.
set-for-of-loop-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

for(let fruit of fruits)  {

  console.log(fruit);

}

2- Les méthodes de Set

add(value)

Ajoutez un élément à la fin de Set si cet élément n'existe pas dans  Set et renvoie cet objet  Set.
set-add-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

// Append an Element to the Set and returns this Set.
var thisFruits = fruits.add("Cherry");

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya', 'Cherry' }

// 'Set' does not allow duplicates
fruits.add("Banana");

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya', 'Cherry' }

delete(value)

Cette méthode sert à retirer un élément de  Set. Cette méthode renvoie  true si elle trouve un élément à retirer et à l'inverse, elle renvoie  false.
set-delete-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya' }

// Delete an element:
var deleted = fruits.delete("Banana");

console.log("Deleted? " + deleted); // true

console.log(fruits); // Set { 'Apple', 'Papaya' }

clear()

Retirez tous les éléments de  Set.
set-clear-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya' }

// Remove all elements.
fruits.clear();

console.log(fruits); // Set { }

console.log("Size after clear: " + fruits.size);

entries()

Cette méthode renvoie un nouvel objet  Iterator que chaque  entry contient un tableau de deux éléments  [value, value]. L'ordre de ces  entry est toujours de même comme l'ordre des éléments dans l'objet  Set. (Observez l'illustration ci-dessous).

set-entries-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya' }

// Iterator Object:
var iteratorEntries = fruits.entries();

var entry;

while( !(entry = iteratorEntries.next() ).done )  {

    console.log(entry.value); // [ 'Apple', 'Apple' ]
}

has(value)

Cette méthode vérifie si une valeur donnée par un paramètre existe ou non dans Set. Renvoie true si elle existe, si non, elle renvoie false.

set-has-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

var has = fruits.has("Banana");

console.log(has); // true

forEach(callbackFn[, thisArg])

Cette méthode va appeler la fonction  callbackFn une fois avec chaque élément de  Set.
mySet.forEach(callbackFn [, thisArg])
 
Des paramètres :
  • callbackFn - Cette fonction sera appelée une fois avec chaque élément de l'objet Set.
  • thisArg - Ce paramètre est utilisé comme this lors de l'exécution de callbackFn.
set-forEach-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

console.log(fruits); // Set { 'Apple', 'Banana', 'Papaya' }

function showFruit(fruit, thisSet) {
  console.log("Fruit: " + fruit);
}

// Or Call: fruits.forEach(showFruit);
fruits.forEach(showFruit, fruits);
 

key() & values()

La méthode  key() & values() renvoie un nouvel objet  Iterator, donc chaque élément de  Iterator a du format  {value: aValue, done: false}.
set-values-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );


var fruitIterator = fruits.values();

var entry;
while ( !(entry = fruitIterator.next()).done)  {
   console.log(entry); // { value: 'Apple', done: false }
   console.log(entry.value); // Apple
}

mySet[Symbol.iterator]

Symbol.iterator est une  property particulière avec l'objet  Set. Par défaut, la valeur de  mySet[Symbol.iterator] est la méthode de  values() de l'objet  mySet.
  • TODO Link!
set-symbol-iterator-example.js
// Create a Set from an Array
var fruits = new Set( ["Apple","Banana","Papaya"] );

// Same as: fruits.values()
var fruitIterator = fruits[Symbol.iterator]();

var entry;
while ( !(entry = fruitIterator.next()).done)  {
   console.log(entry); // { value: 'Apple', done: false }
   console.log(entry.value); // Apple
}

3- WeakSet

Généralement,  WeakSet est similaire à  Set, mais il y a certaines différences comme ci-dessous :
  • Les éléments de WeakSet doivent être des objets, ils ne peuvent pas être un type primitif (Primitive).
  • Les éléments de  WeakSet peuvent être supprimés dans le processus (process) de récupération des ordures (Garbage collection), qui est processus indépendant permettant de supprimer les objets qui ne sont plus utilisés dans le programme.
  • WeakSet ne soutient pas property: size, donc vous ne pouvez pas savoir combien d'éléments qu'elle comprend.
  • De nombreuses méthodes peuvent être disponibles dans la classe  Set mais il n'y a pas de méthode WeakSet, par exemple values(), keys(), clear(),..
Remarque : Vous ne pouvez pas utiliser la boucle  for..of pour  WeakSet, et il n'y a aucune manière de répéter (iterate) sur les éléments de  WeakSet.
Créez un objet  WeakSet.
new Set( [iterable] )
Des paramètres :
  • iterable - Si cet objet est passé (pass) au constructor du WeakSet tous les éléments seront ajoutés au Set. Au contraire, si vous ne précisez pas ce paramètre, ou sa valeur est null l'objet Set sera vide (empty).

Methods:

La quantité des méthodes de  WeakSet est inférieure à la quantité de méthodes​​​​​​​ Set :
  1. WeakSet.add(element)
  2. WeakSet.delete(element)
  3. WeakSet.has(element)
Les éléments dans  WeakSet doivent être des objets, ils ne peuvent pas être de types primitif (Primitive).
let w = new WeakSet();
w.add('a'); // TypeError: Invalid value used in weak set

let s = new Set();
s.add('a'); // Works
weakset-example.js
var element1 = {}; // An Object
var element2 = {foo: "bar"};
var element3 = {bar: "foo"};


var myWeakSet = new WeakSet( [element1, element2] );
myWeakSet.add(element3);

console.log(myWeakSet.has(element2)); // true

View more Tutorials: