Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ rinkinius ir „WeakSets“.
„JavaScript ES6 “ pristatė dvi naujas duomenų struktūras, ty Set
ir WeakSet
.
Rinkinys yra panašus į masyvą, kuris leidžia mums saugoti kelis elementus, tokius kaip skaičiai, eilutės, objektai ir kt. Tačiau, skirtingai nei masyvas, rinkinyje negali būti pasikartojančių reikšmių.
Sukurkite „JavaScript“ rinkinį
Norėdami sukurti Set
, turite naudoti new Set()
konstruktorių. Pavyzdžiui,
// 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))
Kai Set
objektui perduodamos pasikartojančios vertės, pasikartojančios vertės neįtraukiamos.
// Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)
Prieigos rinkinio elementai
Galite pasiekti Set
elementus naudodami values()
metodą ir patikrinti, ar viduje yra elementas Set
naudojant has()
metodą. Pavyzdžiui,
const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)
has()
Metodą galite naudoti norėdami patikrinti, ar elementas yra rinkinyje. Pavyzdžiui,
const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));
Naujų elementų pridėjimas
Naudodami add()
metodą, galite pridėti elementų prie rinkinio . Pavyzdžiui,
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());
Rezultatas
Nustatyti „Iterator“ (1, 2) Nustatyti „Iterator“ (1, 2, 3) Nustatyti „Iterator“ (1, 2, 3)
Elementų pašalinimas
Galite naudoti clear()
ir delete()
metodą pašalinti elementus iš rinkinio.
delete()
Metodas pašalina konkretų elementą nuo A Set
. Pavyzdžiui,
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()
Metodas pašalina visus elementus iš Set
. Pavyzdžiui,
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 ()
Kartoti rinkiniai
Galite kartoti elementus „Set“ naudodami „for… of loop“ arba „forEach“ () metodą. Elementai pasiekiami įterpimo tvarka. Pavyzdžiui,
const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )
Rezultatas
1 2 3
„JavaScript WeakSet“
„WeakSet“ yra panašus į rinkinį. Tačiau „WeakSet“ gali būti tik objektai, o rinkinyje gali būti bet kokie duomenų tipai, pvz., Eilutės, skaičiai, objektai ir kt. Pavyzdžiui,
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))
Kai bandote pridėti kitų duomenų tipų, išskyrus objektus, „WeakSet“ išleidžia klaidą. Pavyzdžiui,
// 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“ metodai
WeakSets turi metodus add()
, delete()
ir has()
. Pavyzdžiui,
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“ nėra kartojami
Skirtingai nuo rinkinių, „WeakSets“ nėra kartojami. Pavyzdžiui,
const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )
Matematinės rinkinio operacijos
„JavaScript“ sistemoje „Set“ nepateikia integruotų metodų matematinėms operacijoms atlikti, pvz., Sujungimas, sankirta, skirtumas ir kt. Tačiau galime sukurti programas toms operacijoms atlikti.
Pavyzdys: nustatykite „Union Operation“
// 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);
Rezultatas
Komplektas („obuolys“, „mango“, „apelsinas“, „vynuogės“, „bananas“)
Pavyzdys: Nustatykite sankirtos operaciją
// 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);
Rezultatas
Rinkinys („obuolys“)
Pavyzdys: Nustatykite skirtumo operaciją
// 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);
Rezultatas
Rinkinys („mango“, „oranžinis“)
Pavyzdys: Nustatykite pogrupio veikimą
// 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);
Rezultatas
tiesa
„JavaScript“ Sets
ir WeakSets
buvo pristatyti ES6 . Kai kurios naršyklės gali nepalaikyti jų naudojimo. Norėdami sužinoti daugiau, apsilankykite „JavaScript“ rinkinių palaikymo ir „JavaScript WeakSets“ palaikymo tarnybose.