Š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.








