În acest tutorial, veți afla despre seturile JavaScript și WeakSets cu ajutorul exemplelor.
JavaScript ES6 a introdus două noi structuri de date, adică Set
și WeakSet
.
Setul este similar cu o matrice care ne permite să stocăm mai multe articole precum numere, șiruri, obiecte etc. Cu toate acestea, spre deosebire de o matrice, un set nu poate conține valori duplicat.
Creați setul JavaScript
Pentru a crea un Set
, trebuie să utilizați new Set()
constructorul. De exemplu,
// 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))
Când valorile duplicate sunt transmise unui Set
obiect, valorile duplicate sunt excluse.
// Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)
Accesați elementele setului
Puteți accesa Set
elemente folosind values()
metoda și puteți verifica dacă există un element în interiorul Set
utilizării has()
metodei. De exemplu,
const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)
Puteți utiliza has()
metoda pentru a verifica dacă elementul se află într-un set. De exemplu,
const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));
Adăugarea de elemente noi
Puteți adăuga elemente la un set folosind add()
metoda. De exemplu,
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());
Ieșire
Set Iterator (1, 2) Set Iterator (1, 2, 3) Set Iterator (1, 2, 3)
Eliminarea elementelor
Puteți utiliza clear()
și delete()
metoda pentru a elimina elemente dintr-un set.
delete()
Metoda elimină un element specific dintr - o Set
. De exemplu,
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()
Metoda elimină toate elementele dintr - o Set
. De exemplu,
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 ()
Seturi Iterate
Puteți itera prin elementele Set utilizând metoda for … of loop sau forEach (). Elementele sunt accesate în ordinea de inserare. De exemplu,
const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )
Ieșire
1 2 3
JavaScript WeakSet
WeakSet este similar cu un set. Cu toate acestea, WeakSet poate conține numai obiecte, în timp ce un set poate conține orice tip de date, cum ar fi șiruri, numere, obiecte etc. De exemplu,
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))
Când încercați să adăugați alte tipuri de date în afară de obiecte, WeakSet aruncă o eroare. De exemplu,
// 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);
Metode WeakSet
WeakSets au metode add()
, delete()
și has()
. De exemplu,
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 nu sunt iterabile
Spre deosebire de Seturi, WeakSets nu sunt iterabile. De exemplu,
const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )
Operații de seturi matematice
În JavaScript, Set nu oferă metode încorporate pentru efectuarea operațiilor matematice, cum ar fi unirea, intersecția, diferența etc. Cu toate acestea, putem crea programe pentru a efectua acele operații.
Exemplu: Setați operațiunea de unire
// 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);
Ieșire
Set („măr”, „mango”, „portocală”, „struguri”, „banane”)
Exemplu: Setați operația de intersecție
// 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);
Ieșire
Set („măr”)
Exemplu: Setați diferența de funcționare
// 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);
Ieșire
Set („mango”, „orange”)
Exemplu: Setați funcționarea subsetului
// 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);
Ieșire
Adevărat
JavaScript Sets
și WeakSets
au fost introduse în ES6 . Este posibil ca unele browsere să nu le accepte utilizarea. Pentru a afla mai multe, vizitați asistența JavaScript Sets și suportul JavaScript WeakSets.