Sada JavaScript a WeakSet

V tomto výučbe sa pomocou príkladov dozviete o sadách JavaScript a WeakSets.

JavaScript ES6 zaviedol dve nové dátové štruktúry, Seta to WeakSet.

Sada je podobná poli, ktoré nám umožňuje ukladať viac položiek, ako sú čísla, reťazce, objekty atď. Na rozdiel od poľa však sada nemôže obsahovať duplicitné hodnoty.

Vytvorte súpravu JavaScript

Ak chcete vytvoriť Set, musíte použiť new Set()konštruktor. Napríklad,

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

Keď sa do Setobjektu odovzdajú duplicitné hodnoty, duplicitné hodnoty sa vylúčia.

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

Prístup k nastaveným prvkom

K Setprvkom máte prístup pomocou values()metódy a môžete skontrolovať, či sa vo vnútri prvku nachádza Setpomocou has()metódy. Napríklad,

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

Pomocou tejto has()metódy môžete skontrolovať, či je prvok v množine. Napríklad,

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

Pridávanie nových prvkov

Pomocou tejto add()metódy môžete do množiny pridať prvky . Napríklad,

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

Výkon

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

Odstraňovanie prvkov

Môžete použiť clear()aj na delete()spôsob, aby sa odstránili prvky zo sady.

delete()Metóda odstráni určitý prvok zo Set. Napríklad,

 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)

clear()Metóda odstraňuje všetky elementy z Set. Napríklad,

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

Iteračné sady

Prostredníctvom prvkov Set môžete iterovať pomocou metódy for … of loop alebo forEach (). K prvkom sa pristupuje v poradí vloženia. Napríklad,

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

Výkon

 1 2 3

Slabá sada JavaScriptu

WeakSet je podobný Setu. WeakSet však môže obsahovať iba objekty, zatiaľ čo Sada môže obsahovať akékoľvek dátové typy, ako sú reťazce, čísla, objekty atď. Napríklad

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

Pri pokuse o pridanie ďalších dátových typov okrem objektov spôsobí WeakSet chybu. Napríklad,

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

Metódy WeakSet

WeakSets majú metódy add(), delete()a has(). Napríklad,

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

Slabé množiny nie sú opakovateľné

Na rozdiel od Sád nie sú WeakSety opakovateľné. Napríklad,

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

Matematické operácie s množinami

Sada v JavaScripte neposkytuje zabudované metódy na vykonávanie matematických operácií, ako je zjednotenie, križovatka, rozdiel atď. Na vykonávanie týchto operácií však môžeme vytvoriť programy.

Príklad: Nastavte prevádzku únie

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

Výkon

 Súprava („jablko“, „mango“, „pomaranč“, „hrozno“, „banán“)

Príklad: Nastaviť prevádzku križovatky

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

Výkon

 Sada („jablko“)

Príklad: Nastaviť operáciu rozdielu

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

Výkon

 Sada ("mango", "oranžová")

Príklad: Nastaviť operáciu podmnožiny

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

Výkon

 pravda

JavaScript Setsa WeakSetsboli zavedené v ES6 . Niektoré prehliadače nemusia podporovať ich použitie. Ak sa chcete dozvedieť viac, navštívte podporu súborov JavaScript a podporu súborov JavaScript WeakSets.

Zaujímavé články...