Tablice. splice()
i usuwanie elementów | Usuwanie zadań z listy
Ok, więc inicjujemy listę zadań, dodajemy i przechowujemy zadania w kodzie, czas więc na kolejną funkcjonalność - usuwanie zadania z listy. Powinniśmy być w stanie usunąć zadanie, które jest już nieaktualne albo wykonane z naszej listy, żeby się nie rozpraszać oraz widzieć nasz progres.
Usunięcia konkretnego elementu z tablicy można dokonać na kilka sposobów. Ze względu na to, że wiemy, czym są indeksy oraz nasza lista pozwala na wyświetlenie indeksów każdego z zadań, najłatwiej będzie sprawdzić, jaki jest indeks zadania, które chcemy usunąć, a potem użyć wbudowanej metody tablicy splice()
w ten sposób:
// załóżmy, że chcemy usunąć zadanie o indeksie 4:
tasks.splice(4, 1);
Metoda splice()
w tym przypadku potrzebuje przekazania do niej dwóch argumentów:
- pierwszy (w naszym przykładzie jest to
4
) jest indeksem elementu, który chcemy usunąć, - drugi z kolei wskazuje na ilość elementów, które chcemy usunąć, zaczynając od tego indeksu (my chcemy usunąć tylko jedno zadanie, więc napiszemy
1
).
Spróbuj usunąć drugie zadanie w konsoli (pamiętaj, że indeksem drugiego zadania jest... 1).
Metoda splice()
służy nie tylko do usuwania pojedynczych elementów z tablicy.
Można z niej korzystać także, by usunąć ileś elementów zacznając od określonego indeksu:
let letters = ["a", "b", "c", "d", "e"];
// usuń 3 elementy, zaczynając od drugiego indeksu:
letters.splice(2, 3);
console.log(letters);
Ponadto, w przypadku usuwania elementów z tablicy, splice()
nie tylko usuwa elementy z tablicy, modyfikując ją, ale także jednocześnie zwraca nową talicę, w której zawarte są usunięte elementy, którą to tablicę możemy np. przypisać do zmiennej:
let letters = ["a", "b", "c", "d", "e"];
// usuń 3 elementy, zaczynając od drugiego indeksu
// i przypisz usunięte elementy do nowej tablicy removedLetters:
let removedLetters = letters.splice(2, 3);
console.log("letters:", letters);
console.log("removedLetters:", removedLetters);
To może być bardzo przydatne, jeśli chcemy później wykorzystać usunięte elementy, np. w powyższym przykładzie wypisaliśmy usunięte litery w konsoli - gdybyśmy ich nie zapisali w zmiennej, to zostałyby one utracone na zawsze.
Pamiętaj tylko, że jeśli usuniesz jeden element, to splice()
zwróci ten jeden element, ale w tablicy! W związku z tym, gdybyś chciał/a zapisać samą wartość usuniętego elementu, to należy ją "wyciągnąć" za pomocą indeksu 0 ze zwróconej tablicy:
let tasks = ["zrobić kawę", "sprawdzić maila", "zajrzeć na stronę kodujemywbiurze.pl"];
// usuń "sprawdzić maila" z listy zadań (indeks 1),
// przypisz usunięte zadanie do tablicy removedTasks,
// wyciągnij usunięte zadanie z tablicy removedTasks i przypisz do zmiennej removedTask:
let removedTasks = tasks.splice(1, 1); // zwraca tablicę
let removedTask = removedTasks[0]; // wyciągamy zadanie z tablicy
console.log("Usunięte zadania:", removedTasks);
console.log("Zadanie", removedTask, "zostało usunięte z listy...");
console.log("Zauktualizowane zadania po usunięciu zadania:", tasks);