Tablice. push()
, indeksy i modyfikacja elementów | Tworzymy listę zadań
Ok, więc potrafimy już utworzyć nową zmienną, by przechować jej wartość w naszym kodzie, potrafimy też tę wartość zmodyfikować/ nadpisać. Natomiast posiadanie tylko jednej zmiennej task
, którą będziemy ciągle modyfikować, jest bardzo niepraktyczne i nie do tego dążymy.
Chcemy utworzyć listę zadań (masz przecież dużo zadań do zrobienia w biurze, także związanych bezpośrednio z pracą 🤫, do której będziemy mogli dodawać zadania, usuwać je, lub też wyświetlić listę zadań w całości!
Stwórzmy zatem najpierw pustą listę zadań, którą przypiszemy do nowej zmiennej:
let tasks = [];
Zauważ, że tym razem wartością zmiennej nie jest ciąg znaków (ang. string
, czyli ciąg znaków ujęty w cudzysłów, jak w np.: "zrobić kawę"), tylko dwa nawiasy kwadratowe []
. Jest to tablica (ang. array
), która jest niczym innym, jak kontenerem/ kolekcją/ listą różnych elementów, które znajdą się w środku.
Na razie nasza tablica/ lista tasks
jest pusta (pomiędzy kwadratowymi nawiasami nie ma żadnych elementów). Gdybyśmy chcieli dodać do niej manualnie (ręcznie wpisując) nasze zadania, to moglibyśmy to zrobić na wiele sposobów, np.:
- Ręcznie wpisujemy każde zadanie jako ciągi znaków ujęte w cudzysłów i oddzielone przecinkiem:
tasks = [ "zrobić kawę", "sprawdzić maila", "zajrzeć na stronę kodujemywbiurze.pl"];
- Używamy wbudowanej metody
push()
, która dodaje zadania wpisane między nawiasami do istniejących już wcześniej zadań w tablicy (Uwaga! Jeśli wcześniej użyłeś kodu z poprzedniego akapitu, to w poniższe zadania już są zawarte w zmiennejtasks
, dlatego najpierw wyczyść zmienną przypisując do niej pustą tablicę:tasks = []
):tasks.push("zrobić kawę", "sprawdzić maila", "zajrzeć na stronę kodujemywbiurze.pl");
- Przypisujemy nową wartość do dowolnego indeksu tablicy, który to sposób rozwinę za chwilę, ale na razie pokażę prosty przykład, w którym przypisujemy zadanie do indeksu nr 3:
tasks[3] = "zadanie przypisane do trzeciego indeksu tablicy";
Czym się różnią powyższe sposoby?
Pierwszy sposób jest oczywisty: po prostu wpisujemy zadania po przecinku i przypisujemy całą listę z zadaniami do zmiennej tasks
. Aczkolwiek, jest to dość niebezpieczny (i niewygodny) sposób na dodawanie wartości do listy... Dlaczego?
To podejście może być dobrym w przypadku, kiedy inicjujemy nową zmienną z jakimiś domyślnymi wartościami (niewielką ich liczbą) na początek, np. let initialTasks = ["zrób kawę", "wyświetl Hello, World w konsoli"]
.
Jeśli z kolei nasz kod w konsoli (lub w programie z prawdziwego zdarzenia) ma mnóstwo linijek i wielokrotnie dodawaliśmy jakieś zadania do naszej listy, jak np.: porozmawiać z koleżanką z biura o jej wczorajszej randce
lub zarejestrować fakturę, która wpłynęła do biura już dwa dni temu
, to teraz, jeśli napiszemy taki kod: tasks = [ "zrobić kawę", "sprawdzić maila", "zajrzeć na stronę kodujemywbiurze.pl"]
, wszystkie wcześniejsze zadania zostaną nadpisane przez te nowo dodane, w związku z czym je utracimy!
Dlatego w tym przypadku trzeba by było znaleźć deklarację zmiennej i tam dopisać nowe wartości, uzupełniając poprzednio wpisane.
W związku z czym, drugie rozwiązanie jest bardziej bezpieczne i czytelniejsze od pierwszego w przypadkach, w których chcemy dodać jakąś wartość do listy.
Kiedy używamy metody push()
w ten sposób:
tasks.push("zrobić kawę", "sprawdzić maila", "zajrzeć na stronę kodujemywbiurze.pl");
zadania zostają dodane do wcześniej istniejących zadań - nie nadpisujemy całej zmiennej, a jedynie "wciskamy" nowe elementy na koniec listy.
Są też inne, bardziej nowoczesne sposoby dodania elementów do tablicy, ale nam na razie wystarczy tyle. Spróbujmy teraz sprawdzić w konsoli, jakie wartości przechowuje zmienna tasks
- albo tak jak to robiliśmy wcześniej (po prostu wpisując nazwę zmiennej w konsoli), albo też poprzez wpisanie następującego kodu console.log(tasks)
i klikając Enter.
W obydwu przypadkach w konsoli wyświetliło się coś takiego: (3) ['zrobić kawę', 'sprawdzić maila', 'zajrzeć na stronę kodujemywbiurze.pl']
. Liczba w nawiasach wskazuje liczbę elementów w tablicy. Jeśli z kolei klikniesz w ikonkę trójkąta, która poprzedza liczbę elementów, to nasza lista rozwinie się w konsoli i będzie bardziej czytelna. Spróbuj rozwinąć listę!
Jak rozwinąłeś/aś listę, to zauważ, że obok naszych zadań po lewej stronie pojawiły się cyfry 0, 1, 2. Te liczby to indeksy. Indeks oznacza numer pozycji elementu w tablicy. Zauważ, że indeksy zaczynają się od 0, nie od 1! Dzięki indeksom możemy mieć dostęp do wybranych elementów z listy, np. jeśli chcemy wyświetlić/ zwrócić pierwszy element z listy tasks
, to musimy napisać następujący kod w konsoli: tasks[0]
, drugi element: tasks[1]
itd.
Dzięki indeksom możemy też mieć dostęp do poszczególnych elementów listy i modyfikować je, nadpisując ich wartość:
tasks[0] = "zrobić kawę z mlekiem";
Teraz, kiedy ponownie sprawdzimy wartość tasks[0]
w konsoli, to wyświetli nam się zrobić kawę z mlekiem
, a nie zrobić kawę
.