ES6 - Mapy i zestawy
ES6 wprowadza dwie nowe struktury danych - maps i sets. Poznajmy je szczegółowo.
Mapy
Mapa to uporządkowany zbiór plików key-value pairs. Mapy są podobne do obiektów. Istnieją jednak pewne różnice między mapami a obiektami. Są one wymienione poniżej -
Sr.No | Obiekt | Mapa |
---|---|---|
1 | Klucze nie mogą być typu obiektu | Klucze mogą być dowolnego typu |
2 | Klucze nie są zamawiane | Klucze są zamawiane |
3 | nie iterowalne | iterowalne |
Składnia
Składnia mapy jest podana poniżej -
let map = new Map([iterable])
let map = new Map()
Przykład
Poniższy przykład tworzy mapę przy użyciu konstruktora iterowalnego -
<script>
let andy = {ename:"Andrel"},
varun = {ename:"Varun"},
prijin = {ename:"Prijin"}
let empJobs = new Map([
[andy,'Software Architect'],
[varun,'Developer']]
);
console.log(empJobs)
</script>
Wyjście powyższego kodu jest pokazane poniżej -
{{…} => "Software Architect", {…} => "Developer"}
Sprawdzanie rozmiaru mapy
Właściwość size może służyć do określania liczby wartości przechowywanych na mapie.
Składnia
Składnia do sprawdzania rozmiaru mapy jest podana poniżej -
map_name.size
Przykład
<script>
let daysMap = new Map();
daysMap.set('1', 'Monday');
daysMap.set('2', 'Tuesday');
daysMap.set('3', 'Wednesday');
console.log(daysMap.size);
</script>
Wyjście powyższego kodu jest pokazane poniżej -
3
Oto kilka typowych metod, których można używać do manipulowania mapami:
Sr.No | Obiekt i mapa |
---|---|
1 | set (klucz, wartość) Dodaje klucz i wartość do mapy |
2 | Weź klucz) Zwraca wartość, jeśli klucz jest dopasowany |
3 | ma (klucz) Zwraca wartość true, jeśli istnieje element z określonym kluczem; else zwraca false |
4 | Klucze() Zwraca iterator zawierający klucze dla każdego elementu w obiekcie mapy |
5 | wartości () Zwraca iterator zawierający wartości dla każdego elementu w obiekcie mapy |
6 | wpisy () Zwraca iterator zawierający pary klucz-wartość dla każdego elementu w Map |
7 | usuń (klucz) Usuwa określony element z obiektu Map |
WeakMap
WeakMap to mały plik subset of map. Klucze są słabo przywoływane, więc może być tylko nieprymitywne. Jeśli nie ma odniesienia do kluczy obiektów, zostanie poddane czyszczeniu.
- nie iterowalne
- każdy klucz jest typem obiektu
WeakMap pozwoli na czyszczenie pamięci, jeśli klucz nie ma odniesienia.
Składnia
Składnię WeakMap przedstawiono poniżej -
new WeakMap([iterable])
Przykład 1
<script>
let emp = new WeakMap();
emp.set(10,'Sachin');// TypeError as keys should be object
</script>
Przykład 2
<script>
let empMap = new WeakMap();
// emp.set(10,'Sachin');// Error as keys should be object
let e1= {ename:'Kiran'},
e2 = {ename:'Kannan'},
e3 = {ename:'Mohtashim'}
empMap.set(e1,1001);
empMap.set(e2,1002);
empMap.set(e3,1003);
console.log(empMap)
console.log(empMap.get(e2))
console.log(empMap.has(e2))
empMap.delete(e1)
console.log(empMap)
</script>
Wynik powyższego kodu jest taki, jak wspomniano poniżej -
{{…} => 1002, {…} => 1003, {…} => 1001}
1002
true
{{…} => 1002, {…} => 1003}
Zestaw
Zestaw to nieuporządkowana kolekcja unikalnych wartości. Ta struktura danych może zawierać wartości typu pierwotnego i obiektowego.
Składnia
Składnia zestawu jest podana poniżej -
new Set([iterable])
new Set()
Przykład
<script>
let names = new Set(['A','B','C','D']);
console.log(names)
</script>
Wynik powyższego kodu jest taki, jak podano poniżej -
{"A", "B", "C", "D"}
Sprawdzanie rozmiaru zestawu
Właściwość size obiektu Set może służyć do wykonywania zapytań dotyczących liczby elementów w zestawie.
Składnia
Składnia do sprawdzania rozmiaru zestawu jest wymieniona poniżej -
set.size
Przykład
<script>
let names = new Set(['A','B','C','D']);
console.log(names.size)
</script>
Wynik powyższego kodu jest taki, jak podano poniżej -
4
Iterowanie zestawu
Możemy użyć forEach i for..ofpętle do iteracji w zestawie. Pokazuje to poniższy przykład -
Przykład
<script>
let names= new Set(['A','B','C','D']);
//iterate using forEach
console.log('forEach')
names.forEach(n=>console.log(n))
console.log('for of..')
//iterate using for..of
for(let n of names){
console.log(n)
}
</script>
Wynik powyższego kodu jest taki, jak wspomniano poniżej -
forEach
A
B
C
D
for of..
A
B
C
D
Do manipulowania zestawem można użyć następujących metod -
Sr.No | Obiekt i mapa |
---|---|
1 | add (element) Dodaje element do zestawu |
2 | ma (element) Zwraca wartość true, jeśli znaleziono element; else zwraca false |
3 | usuń (element) Usuń określony element z zestawu |
4 | jasny() Czyści wszystkie elementy z zestawu |
WeakSet
Weakset słabo przechowuje obiekty, co oznacza, że obiekty przechowywane w WeakSet podlegają czyszczeniu pamięci, jeśli nie są przywoływane. WeakSets nie są iterowalne i nie mająget metoda.
<script>
let e1 = {ename:'A'}
let e2 ={ename:'B'}
let e3 ={ename:'C'}
let emps = new WeakSet();
emps.add(e1);
emps.add(e2)
.add(e3);
console.log(emps)
console.log(emps.has(e1))
emps.delete(e1);
console.log(emps)
</script>
Wynik powyższego kodu będzie taki, jak wspomniano poniżej -
WeakSet {{…}, {…}, {…}}
true
WeakSet {{…}, {…}}