JavaScript-sæt og svag sæt

I denne vejledning lærer du om JavaScript-sæt og svage sæt ved hjælp af eksempler.

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

Sæt ligner en matrix, der giver os mulighed for at gemme flere elementer som tal, strenge, objekter osv. Men i modsætning til en matrix kan et sæt ikke indeholde duplikatværdier.

Opret JavaScript-sæt

For at oprette en Setskal du bruge 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 duplikatværdier sendes til et Setobjekt, ekskluderes duplikatværdierne.

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

Adgang til sætelementer

Du kan få adgang til Setelementer ved hjælp af values()metoden og kontrollere, om der er et element inde Setved hjælp af 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 bruge has()metoden til at kontrollere, om elementet er i et sæt. For eksempel,

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

Tilføjelse af nye elementer

Du kan føje elementer til et sæt ved hjælp af 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());

Produktion

 Sætterator (1, 2) Sætterator (1, 2, 3) Sætterator (1, 2, 3)

Fjernelse af elementer

Du kan bruge clear()og delete()metoden til at fjerne elementer fra et sæt.

Den delete()metode fjerner et specifikt 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()metode 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 sæt

Du kan gentage gennem sætelementerne ved hjælp af for … of loop eller forEach () -metoden. Du får adgang til elementerne i indsætningsrækkefølgen. For eksempel,

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

Produktion

 1 2 3

JavaScript svagt sæt

WeakSet svarer til et sæt. WeakSet kan dog kun indeholde objekter, mens et sæt kan indeholde alle datatyper såsom strenge, tal, objekter osv. F.eks.

 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 forsøger at tilføje andre datatyper udover objekter, kaster WeakSet en fejl. 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 kan ikke gentages

I modsætning til sæt er WeakSets ikke iterable. For eksempel,

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

Matematiske sætoperationer

I JavaScript indeholder Set ikke indbyggede metoder til udførelse af matematiske operationer såsom union, skæringspunkt, forskel osv. Vi kan dog oprette programmer til at udføre disse operationer.

Eksempel: Indstil EU-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);

Produktion

 Sæt ("æble", "mango", "appelsin", "druer", "banan")

Eksempel: Indstil skæringsfunktion

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

Produktion

 Sæt ("æble")

Eksempel: Indstil forskellen

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

Produktion

 Sæt ("mango", "orange")

Eksempel: Indstil delmængde

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

Produktion

 sand

JavaScript Setsog WeakSetsblev introduceret i ES6 . Nogle browsere understøtter muligvis ikke deres brug. Hvis du vil vide mere, skal du besøge JavaScript Sets support og JavaScript WeakSets support.

Interessante artikler...