Destrukturyzacja
Dane z obiektów możemy wyciągać tak jak to robiliśmy do tej pory, czyli korzystając ze składni kropki lub kwadratowych nawiasów. Możemy też skorzystać z tak zwanego przypisania destrukturyzującego, czy też destrukturyzacji, która skraca zapis.
const tab = ["Ala", "Ola", "Ela"];
//pobieram wartości klasycznie
const name1 = tab[0];
const name2 = tab[1];
//za pomocą destrukturyzacji
const [name1, name2] = tab;const ob = {
name : "Rudzik",
pet : "kot"
}
//klasycznie
const name = ob.name;
const pet = ob["pet"];
//za pomocą destrukturyzacji
const {name, pet} = ob;Destrukturyzacja tablic
Aby stworzyć nowe zmienne na bazie danych z tablicy możemy skorzystać z zapisu:
Jeżeli chcielibyśmy z tablicy wyciągnąć wartości, ale z pominięciem kolejnej, wtedy po prostu jej nie podajemy:
Podczas tworzenia zmiennych, możemy im też ustawić domyślną wartość, która zostanie użyta, jeżeli w tablicy nie będzie wartości na danym indeksie:
Przypisanie takie możemy też zastosować przy zamianie miejscami wartości zmiennych:
Destrukturyzacja obiektów
Przypuśćmy, że mamy obiekt:
Jeżeli teraz chciałbym, z tego obiektu wyciągnąć dane i podstawić je pod zmienne mógłbym to zrobić w klasyczny sposób:
Ale i korzystając z destrukturyzacji:
Tak samo jak w przypadku tablic, zmiennym możemy ustawić domyślną wartość:
Gdybyś chciał stworzyć zmienne o nowych nazwach, musisz użyć znaku dwukropka:
Destrukturyzacja w iteracji
Destrukturyzacja idealnie sprawdza się w przypadku iterowania po danych:
Destrukturyzacja i parametry funkcji
Bardzo przydatnym manewrem jest zastosowanie destrukturyzacji w przypadku parametrów funkcji.
Wszędzie tam, gdzie ktoś (w tym silnik Javascript) przekaże ci jakiś obiekt czy tablicę, możesz używać desktruturyzacji do wyciągania danych z jego wnętrza.
Zamiast więc działać bezpośrednio na danej zmiennej:
Mogę wyciągnąć odpowiednie dane:
Podobnie będzie miało to miejsce w przypadku przekazywania wartości do funkcji:
Zamiast:
mogę:
Szczególnie ten ostatni przypadek ma bardzo duże znaczenie przy bardziej rozbudowanych aplikacjach.
W obiektach kolejność kluczy nie ma znaczenia, dzięki czemu mogę przekazywać do funkcji dane nie zważając na kolejność danych:
Zamiast pamiętania kolejności, mogę skróconym zapisem stworzyć obiekt i przekazać go do funkcji:
Co więcej mogę to połączyć z domyślnymi wartościami dla wyciąganych kluczy z obiektu, dzięki czemu odpalając funkcję nie będę musiał przekazywać wszystkich wartości:
Destrukturyzacja i rest
Stosując przypisanie destrukturyzacji możemy też użyć operatora rest, co pozwala nam wybierać resztę zmiennych:
Podobny zabieg możemy też stosować dla obiektów, co przydaje się gdy chcemy pomijać jakieś właściwości:
lub kopiować płaskie obiekty:
Podejście to będziemy stosować w kilku projektach np. tutaj lub tutaj.
Bardziej skomplikowana struktura
Jeżeli za pomocą destrukturyzacji chcemy wyciągać zagnieżdżone dane, wtedy w naszym wzorze powinniśmy odwzorować wygląd struktury obiektu:
Zauważ, że nasz wzorzec postawiłem pod myObj lub pusty obiekt. Dzięki temu zabezpieczam się na wypadek, gdyby nie było myObj w ogóle.
Last updated