„JavaScript“ rinkinys ir „WeakSet“

Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ rinkinius ir „WeakSets“.

„JavaScript ES6 “ pristatė dvi naujas duomenų struktūras, ty Setir 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 Setobjektui 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 Setelementus naudodami values()metodą ir patikrinti, ar viduje yra elementas Setnaudojant 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“ Setsir WeakSetsbuvo 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.

Įdomios straipsniai...