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