Š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, Set
un 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 Set
objektam 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 Set
elementus, 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 Sets
un WeakSets
tika 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.