JavaScript készlet és WeakSet

Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript-készleteket és a WeakSets-eket.

A JavaScript ES6 két új adatstruktúrát vezetett be, azaz: Setés WeakSet.

A készlet hasonló egy tömbhöz, amely lehetővé teszi számunkra több elem, például számok, karakterláncok, objektumok stb. Tárolását. A tömbtől eltérően azonban a készlet nem tartalmazhat ismétlődő értékeket.

Hozzon létre JavaScript-készletet

A létrehozásához Sethasználnia kell a new Set()konstruktort. Például,

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

Amikor duplikált értékeket továbbítanak egy Setobjektumnak, a duplikált értékeket kizárják.

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

Hozzáférés a készletelemekhez

Érheti Setelemek felhasználásával values()módszer és ellenőrizze, ha van egy elem belsejében Seta has()módszer. Például,

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

A has()módszer segítségével ellenőrizheti, hogy az elem egy készletben van-e. Például,

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

Új elemek hozzáadása

A add()módszerrel elemeket adhat hozzá egy készlethez . Például,

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

Kimenet

 Iterátor beállítása (1, 2) Iterátor beállítása (1, 2, 3) Iterátor beállítása (1, 2, 3)

Elemek eltávolítása

A clear()és a delete()módszer segítségével eltávolíthatja az elemeket egy készletből.

A delete()módszer eltávolít egy adott elemet az a-ból Set. Például,

 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)

A clear()módszer minden elemet eltávolít a Set. Például,

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

Iterátumkészletek

A Set elemeken keresztül iterálhat a for… of ciklus vagy a forEach () módszerrel. Az elemeket a beillesztési sorrendben lehet elérni. Például,

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

Kimenet

 1 2 3

JavaScript WeakSet

A WeakSet hasonló egy készlethez. A WeakSet azonban csak objektumokat tartalmazhat, míg egy halmaz bármilyen adattípust tartalmazhat, például karakterláncokat, számokat, objektumokat stb.

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

Amikor az objektumokon kívül más adattípusokat próbál megadni, a WeakSet hibát dob. Például,

 // 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 módszerek

WeakSets van módszerek add(), delete()és has(). Például,

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

A WeakSets nem írható

A Setektől eltérően a WeakSets nem iterálható. Például,

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

Matematikai halmazműveletek

A JavaScript-ben a Set nem biztosít beépített módszereket matematikai műveletek végrehajtására, mint például egyesítés, metszéspont, különbség stb.

Példa: Állítsa be az Unió működését

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

Kimenet

 Készlet ("alma", "mangó", "narancs", "szőlő", "banán")

Példa: Állítsa be a kereszteződés működését

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

Kimenet

 Készlet ("alma")

Példa: Állítsa be a Különbség műveletet

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

Kimenet

 Készlet ("mangó", "narancs")

Példa: Állítsa be az Alhalmaz műveletét

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

Kimenet

 igaz

JavaScriptet Setsés WeakSetsaz ES6- ban vezették be . Egyes böngészők nem támogatják a használatukat. További információkért látogasson el a JavaScript Sets és a Java WeakSets támogatás oldalaira.

érdekes cikkek...