JavaScript Set en WeakSet

In deze tutorial leer je aan de hand van voorbeelden over JavaScript-sets en WeakSets.

De JavaScript ES6 heeft twee nieuwe datastructuren geïntroduceerd, namelijk Seten WeakSet.

Set is vergelijkbaar met een array die ons in staat stelt meerdere items op te slaan, zoals getallen, tekenreeksen, objecten, enz. In tegenstelling tot een array kan een set echter geen dubbele waarden bevatten.

Maak een JavaScript-set

Om een ​​te maken Set, moet u de new Set()constructor gebruiken. Bijvoorbeeld,

 // 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))

Wanneer dubbele waarden worden doorgegeven aan een Setobject, worden de dubbele waarden uitgesloten.

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

Toegang tot Set-elementen

U kunt toegang krijgen tot Setelementen met behulp van de values()methode en controleren of er een element in zit Setmet behulp van has()methode. Bijvoorbeeld,

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

U kunt de has()methode gebruiken om te controleren of het element in een set zit. Bijvoorbeeld,

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

Nieuwe elementen toevoegen

U kunt met de add()methode elementen aan een set toevoegen . Bijvoorbeeld,

 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());

Uitvoer

 Iterator instellen (1, 2) Iterator instellen (1, 2, 3) Iterator instellen (1, 2, 3)

Elementen verwijderen

U kunt clear()de delete()methode en gebruiken om elementen uit een set te verwijderen.

De delete()methode verwijdert een specifiek element uit een Set. Bijvoorbeeld,

 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)

De clear()methode verwijdert alle elementen uit een Set. Bijvoorbeeld,

 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 ()

Herhaal sets

U kunt de Set-elementen doorlopen met de for… of loop of forEach () methode. De elementen zijn toegankelijk in de invoegvolgorde. Bijvoorbeeld,

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

Uitvoer

 1 2 3

JavaScript WeakSet

De WeakSet is vergelijkbaar met een set. WeakSet kan echter alleen objecten bevatten, terwijl een set alle gegevenstypen kan bevatten, zoals strings, getallen, objecten, enz.

 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))

Wanneer u naast objecten andere gegevenstypen probeert toe te voegen, genereert WeakSet een fout. Bijvoorbeeld,

 // 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);

WeakSet-methoden

WeakSets hebben methoden add(), delete()en has(). Bijvoorbeeld,

 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 ()

WeakSets zijn niet itereerbaar

In tegenstelling tot Sets zijn WeakSets niet itereerbaar. Bijvoorbeeld,

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

Wiskundige setbewerkingen

In JavaScript biedt Set geen ingebouwde methoden voor het uitvoeren van wiskundige bewerkingen zoals unie, kruising, verschil, enz. We kunnen echter programma's maken om die bewerkingen uit te voeren.

Voorbeeld: stel Union Operation in

 // 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);

Uitvoer

 Set ("appel", "mango", "sinaasappel", "druiven", "banaan")

Voorbeeld: kruispuntbewerking instellen

 // 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);

Uitvoer

 Set ("appel")

Voorbeeld: stel verschilbewerking in

 // 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);

Uitvoer

 Set ("mango", "orange")

Voorbeeld: Subset-bewerking instellen

 // 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);

Uitvoer

 waar

JavaScript Setsen WeakSetszijn geïntroduceerd in ES6 . Sommige browsers ondersteunen het gebruik ervan mogelijk niet. Ga voor meer informatie naar Ondersteuning voor JavaScript-sets en ondersteuning voor JavaScript WeakSets.

Interessante artikelen...