JavaScript kopa un WeakSet

Šajā apmācībā jūs uzzināsit par JavaScript komplektiem un WeakSets ar piemēru palīdzību.

JavaScript ES6 ir ieviesis divas jaunas datu struktūras, ti, Setun WeakSet.

Kopa ir līdzīga masīvam, kas ļauj mums saglabāt vairākus vienumus, piemēram, skaitļus, virknes, objektus utt. Tomēr atšķirībā no masīva kopa nevar saturēt vērtību dublikātus.

Izveidot JavaScript kopu

Lai izveidotu a Set, jums jāizmanto new Set()konstruktors. Piemēram,

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

Kad Setobjektam tiek nodotas dublikātu vērtības , dublikātu vērtības tiek izslēgtas.

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

Piekļuve kopas elementiem

Jūs varat piekļūt Setelementus, izmantojot values()metodi, un pārbaudiet, vai ir elements iekšā Set, izmantojot has()metodi. Piemēram,

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

Jūs varat izmantot has()metodi, lai pārbaudītu, vai elements atrodas komplektā. Piemēram,

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

Jaunu elementu pievienošana

Izmantojot add()metodi, komplektam var pievienot elementus . Piemēram,

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

Rezultāts

 Iteratora iestatīšana (1, 2) Iteratora iestatīšana (1, 2, 3) Iteratora iestatīšana (1, 2, 3)

Elementu noņemšana

Jūs varat izmantot clear(), un šo delete()metodi, lai novērstu elementus no kopuma.

delete()Metode novērš konkrētu elementu no Set. Piemēram,

 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()Metodi noņem visus elementus no A Set. Piemēram,

 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ātu kopas

Varat atkārtot elementus Set, izmantojot for… of loop vai forEach () metodi. Elementiem var piekļūt ievietošanas secībā. Piemēram,

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

Rezultāts

 1 2 3

JavaScript WeakSet

WeakSet ir līdzīgs komplektam. Tomēr WeakSet var saturēt tikai objektus, savukārt komplektā var būt jebkādi datu tipi, piemēram, virknes, skaitļi, objekti utt. Piemēram,

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

Mēģinot pievienot citus datu tipus, izņemot objektus, WeakSet rada kļūdu. Piemēram,

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

WeakSets ir metodes add(), delete()un has(). Piemēram,

 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 nav atkārtojami

Atšķirībā no kopām, WeakSets nav atkārtojams. Piemēram,

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

Matemātisko kopu darbības

JavaScript valodā Set nenodrošina iebūvētas metodes matemātisko darbību veikšanai, piemēram, savienojums, krustojums, atšķirība utt. Tomēr šo darbību veikšanai mēs varam izveidot programmas.

Piemērs: iestatiet Savienības darbību

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

Rezultāts

 Komplekts ("ābols", "mango", "apelsīns", "vīnogas", "banāns")

Piemērs: iestatiet krustošanās darbību

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

Rezultāts

 Komplekts ("ābols")

Piemērs: iestatiet atšķirības darbību

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

Rezultāts

 Komplekts ("mango", "oranžs")

Piemērs: iestatiet apakškopas darbību

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

Rezultāts

 taisnība

JavaScript Setsun WeakSetstika ieviesti ES6 . Dažas pārlūkprogrammas, iespējams, neatbalsta to lietošanu. Lai uzzinātu vairāk, apmeklējiet JavaScript komplektu atbalstu un JavaScript WeakSets atbalstu.

Interesanti raksti...