JavaScript: Set i Map
Opublikowano ptk 12 czerwca 2020 w javascript • 2 min read
ES6 wprowadza 2 dodatkowe struktury przechowywania danych Map oraz Set
Map
Mapa jest kolekcją danych, do których przyporządkowane są klucze, w odróżnieniu od zwykłego Obiektu w tym przypadku klucze mogą być dowolnego typu/o dowolnym typie przykładowo kluczem może być Obiekt
Przykładowo:
let map = new Map();
map.set('1', 'str1'); // łańcuch znaków jako klucz
map.set(1, 'num1'); // Liczba jako klucz
map.set(true, 'bool1'); // Boolean jako klucz
=============================
let r2d2 = { name: "R2D2" };
// w mapie będą przechowywane informacje w ilu ekranizacjach wystąpił r2d2
let moviesCountMap = new Map();
// r2d2 jest kluczem dla mapy, dodajemy 9 jako liczbę filmów, w których można go zobaczyć
moviesCountMap.set(r2d2, 9);
alert( visitsCountMap.get(r2d2) ); // 9
metody i właściwości Mapy
new Map()
– tworzy mapę
map.set(key, value)
– zapisuje daną wraz z kluczem
Każde wywołanie .set()
zwraca Map stąd można je łączyć w łańcuchy
map.set('1', 'str1');
.set(1, 'num1');
.set(true, 'bool1');
map.get(key)
– zwraca wartość przypisaną do klucza (undef. jeśli klucza nie ma)
map.has(key)
– zwraca true/false jeśli klucz istnieje w mapie
map.delete(key)
– usuwa wartość wg podanego klucza
map.clear()
– czyści całą mapę
map.size
– zwraca "długość" mapy/ liczbę zapisanych wartości/danych
map.keys()
– zwraca wszystkie klucze w postaci iterowalnej
// iteruje przez klucze i je zwraca for (let droid of allDroids.keys()) { alert(droid); // r2d2, c3po, d-o }
map.values()
– zwraca wszystkie właściwości w postaci iterowalnej
map.entries()
– zwraca wszystkie wpisy w postaci iterowalnej [key, value] -> for..of.
Set
Set jest specjalnym typem kolekcji danych pozbawionym klucza, gdzie każda wartość może wystąpić jeden raz
new Set(iterable)
– tworzy set, jeśli jako argument podane są dane w postaci iterowalnej (np. tablica) to tworzy z nich set
set.add(value)
– dodaje wartość i zwraca set
set.delete(value)
– usuwa wartość, zwraca true
jeśli wartość istnieje na początku wywołania
set.has(value)
– zwraca true/false
w zależności istnienia wartości w secie
set.clear()
– usuwa wszystko z setu
set.size
– zwraca liczbę obiektów znajdujących sie w secie.
Inne źródła: