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: