Sada JavaScript a WeakSet

V tomto kurzu se na příkladech dozvíte o sadách JavaScript a WeakSets.

JavaScript ES6 zavedla dva nové datové struktury, tedy Seti WeakSet.

Sada je podobná poli, které nám umožňuje ukládat více položek, jako jsou čísla, řetězce, objekty atd. Na rozdíl od pole však sada nemůže obsahovat duplicitní hodnoty.

Vytvořte sadu JavaScript

Chcete-li vytvořit Set, musíte použít new Set()konstruktor. Napří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))

Když jsou do Setobjektu předány duplicitní hodnoty, jsou duplicitní hodnoty vyloučeny.

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

Přístup k nastaveným prvkům

Můžete přistupovat k Setprvkům pomocí values()metody a zkontrolovat, zda je uvnitř prvek Setpomocí has()metody. Například,

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

has()Metodu můžete použít ke kontrole, zda je prvek v sadě. Například,

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

Přidávání nových prvků

Pomocí add()metody můžete do sady přidat prvky . Napří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ýstup

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

Odstranění prvků

Metodu clear()a můžete použít delete()k odebrání prvků ze sady.

delete()Metoda odstraní určitý prvek ze Set. Napří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()Metoda odstraňuje všechny elementy z Set. Napří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

Prostřednictvím Set prvků můžete iterovat pomocí metody for… of loop nebo forEach (). K prvkům se přistupuje v pořadí vložení. Například,

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

Výstup

 1 2 3

Slabá sada JavaScriptu

WeakSet je podobný Set. WeakSet však může obsahovat pouze objekty, zatímco sada může obsahovat jakékoli datové typy, jako jsou řetězce, čísla, objekty atd. Napří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))

Když se pokusíte přidat další datové typy kromě objektů, WeakSet vyvolá chybu. Napří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);

Metody WeakSet

WeakSets mají metody add(), delete()a has(). Napří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é sady nejsou iterovatelné

Na rozdíl od sad WeakSets nejsou iterovatelné. Například,

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

Matematické operace operací

V JavaScriptu sada neposkytuje předdefinované metody pro provádění matematických operací, jako je sjednocení, křižovatka, rozdíl atd. Můžeme však vytvořit programy, které tyto operace provedou.

Příklad: Nastavit provoz Unie

 // 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ýstup

 Sada („jablko“, „mango“, „pomeranč“, „hrozny“, „banán“)

Příklad: Nastavit provoz křiž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ýstup

 Sada („jablko“)

Příklad: Nastavit operaci rozdílu

 // 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ýstup

 Sada („mango“, „oranžová“)

Příklad: Nastavit provoz 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ýstup

 skutečný

JavaScript Setsa WeakSetsbyly zavedeny v ES6 . Některé prohlížeče nemusí jejich použití podporovat. Chcete-li se dozvědět více, navštivte podporu sad JavaScript a podporu Java WeakSets.

Zajímavé články...