Wyszukaj / o blogu

JavaScript: Set i Map

Opublikowano ptk 12 czerwca 2020 w javascript • 2 min read

set_and_map

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.

mav-vs-object


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.

map-set-spread


Inne źródła:

javascript.info - set and map

SO - Map vs Object in JavaScript