JavaScript-sett og svakt sett

I denne veiledningen vil du lære om JavaScript-sett og svake sett ved hjelp av eksempler.

JavaScript ES6 har introdusert to nye datastrukturer, dvs. Setog WeakSet.

Sett ligner på en matrise som lar oss lagre flere elementer som tall, strenger, objekter osv. Imidlertid, i motsetning til en matrise, kan et sett ikke inneholde dupliserte verdier.

Opprett JavaScript-sett

For å lage en Set, må du bruke new Set()konstruktøren. For eksempel,

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

Når dupliserte verdier sendes til et Setobjekt, blir duplikatverdiene ekskludert.

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

Få tilgang til settelementer

Du kan få tilgang til Setelementer ved hjelp av values()metoden og sjekke om det er et element inni Setved hjelp av has()metoden. For eksempel,

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

Du kan bruke has()metoden til å sjekke om elementet er i et sett. For eksempel,

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

Legge til nye elementer

Du kan legge til elementer i et sett ved hjelp av add()metoden. For eksempel,

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

Produksjon

 Set Iterator (1, 2) Set Iterator (1, 2, 3) Set Iterator (1, 2, 3)

Fjerne elementer

Du kan bruke clear()og delete()metoden til å fjerne elementer fra et sett.

Den delete()metoden fjerner et spesifikt element fra en Set. For eksempel,

 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)

Den clear()metoden fjerner alle elementer fra en Set. For eksempel,

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

Iterate sett

Du kan gjenta gjennom Set-elementene ved hjelp av for … of loop eller forEach () -metoden. Elementene er tilgjengelige i innsettingsrekkefølgen. For eksempel,

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

Produksjon

 1 2 3

JavaScript WeakSet

WeakSet ligner på et sett. Imidlertid kan WeakSet bare inneholde objekter, mens et sett kan inneholde alle datatyper som strenger, tall, objekter osv. For eksempel,

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

Når du prøver å legge til andre datatyper i tillegg til objekter, kaster WeakSet en feil. For eksempel,

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

WeakSets har metoder add(), delete()og has(). For eksempel,

 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 er ikke iterable

I motsetning til sett er ikke svake sett iterable. For eksempel,

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

Matematiske settoperasjoner

I JavaScript gir Set ikke innebygde metoder for å utføre matematiske operasjoner som forening, skjæringspunkt, forskjell osv. Imidlertid kan vi lage programmer for å utføre disse operasjonene.

Eksempel: Still inn Union Operation

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

Produksjon

 Sett ("eple", "mango", "oransje", "druer", "banan")

Eksempel: Sett kryssdrift

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

Produksjon

 Sett ("eple")

Eksempel: Angi forskjell

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

Produksjon

 Sett ("mango", "oransje")

Eksempel: Angi delsettdrift

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

Produksjon

 ekte

JavaScript Setsog WeakSetsble introdusert i ES6 . Noen nettlesere støtter kanskje ikke bruken av dem. Hvis du vil vite mer, kan du gå til JavaScript Sets support og JavaScript WeakSets support.

Interessante artikler...