W Javascript tablice są jednym z najbardziej popularnych i wykorzystywanych obiektów. Możemy na nich operować na dwa sposoby - mutując oryginalną tablicę lub tworząc nowy obiekt za każdym razem. W poście pokazuję jak wykonać podstawowe operacje na tablicach w tych dwóch podejściach.
Mutating vs non-mutating
W przypadku JS'a możemy decydować, jak chcemy wykonywać operacje na obiektach. Mutując obiekty, zmieniamy ich wartość. Jest to na pewno wygodne, ale może powodować niechciane efekty uboczne np.: przypadkowe nadpisanie danych. Jest to też trudne w debugowaniu. Dużo lepsze jest wykorzystanie podejścia, gdzie nie mutujemy obiekty. Zamiast tego za każdym razem jest zwracany nowy obiekt, który można wykorzystać.
Dodawanie elementu
Mutating
Tutaj mamy do wyboru dwie funkcje, które wstawiają nowy element do tablicy.
- .push() wstawia element na koniec tablicy,
- .unshift() wstawia element na początek tablicy.
Non mutating
Przy podejściu bez mutowania obiektu nie będę korzystać z żadnej funkcji. Wystarczy operator spread (...)
Jestem interesujący Twojej opinii na temat dodawania. Jak dla mnie drugi sposób zapisu jest bardziej czytelny i nie muszę się zastanawiać nad tym jakiej metody użyć, jakie ma argumenty itd.
Usuwanie elementu
Mutating
Do usuwanie elementów można wykorzystać aż 3 funkcje:
- .pop() - usuwa ostatni element,
- .shift() - usuwa pierwszy element,
- .splice(m, n)- usuwa n elementów zaczynając od indeksu m.
Non-mutating
Tutaj możemy korzystać z dwóch podejść. Pierwsze z nich polega na użyciu funkcji .filter(), by zwrócić z tablicy tylko część elementów.
Można również skorzystać z funkcji .slice, by wydobyć część tablicy i zwrócić jako nową tablicę.
Problemem z wykorzystaniem tej funkcji jest trudność w usunięciu elementu w środku tablicy. Ale da się to obejść z wykorzystaniem operatora spread.
Zamiana elementu
Mutating
Tutaj mamy do wyboru dwa podejścia. Pierwsze, najprostsze, wykorzystuje znajomość indeksu w tablicy.
Natomiast drugie podejście wykorzystuje metodę .splice
Można też zrobić więcej i podmienić jednocześnie kilka elementów.
Non mutating
Tutaj można wykorzystać metodę .map() do tego, by przekształcić tablicę.
Inny sposób to wykorzystanie metody .slice()
A Ty co o tym sądzisz? Jakie metody najczęściej wykorzystujesz? Wolisz podejście mutating czy non-mutating? Daj znać w komentarzu albo prywatnej wiadomości.