Dwie podobnie brzmiące funkcje .slice
i .splice
– co je różni?
Zacznijmy od .splice
:
Splice modyfikuje zawartość tablicy dodając i/lub usuwając elementy bazując na podanych parametrach. Splice modyfikuje tablice na której metoda została wykonana i zwraca nową tablicę z elementami usuniętymi.
Splice akceptuje poniższe parametry:
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start – określa index od którego usuwamy zawartość w naszej tabeli. Przypominam, że indexy zaczynają się od 0 a nie od 1 🙂
deleteCount (parametr opcjonalny) – określa ilość rekordów w tabeli które chcemy usunąć. W przypadku jego braku metoda usuwa wszystkie elementy od indexu start. W przypadku podania wartości 0 – żaden rekord nie jest usuwany.
item1, item2 … – (parametry opcjonalne) – określa elementy które chcemy wstawić do tabeli w miejsce określone przez index start.
Przykład działania:
let myTable = ['Michal','Wojtek','Filip'];
console.log(myTable); // ['Michal','Wojtek','Filip'];
let removed = myTable.splice(1,1, 'Ola','Ala');
console.log(myTable); // ['Michal', 'Ola', 'Ala', 'Filip']
console.log(removed); // ['Wojtek']
Teraz przyjrzyjmy się metodzie .slice
:
Slice zwraca kopię tablicy na której została wykonana na podstawie podanych parametrów (chociaż można ich też nie podawać). Funkcja nie modyfikuje bazowej tablicy.
Slice akceptuje poniższe opcjonalne parametry:
arr.slice([begin[, end]])
Begin – indeks od którego funkcja zaczyna kopiowanie tablicy. W przypadku podania wartości ujemnej np. -2 funkcja zacznie kopiowanie od drugiego elementu od końca. Jeśli parametr nie zostanie podany, zaczyna domyślnie od indeksu 0. W przypadku kiedy begin jest większe od end – zwraca pustą tablicę.
End – indeks do którego tablica ma być kopiowana (element o tym indeksie nie jest kopiowany). W przypadku podania wartości ujemnej np. -2, funkcja zakończy kopiowanie na drugiego elemencie od końca. Jeśli parametr nie zostanie podany, skopiowane zostaną wszystkie rekordy zaczynając od indeksu start. W przypadku kiedy indeks end jest mniejszy od start – zwraca pustą tablicę.
Jeśli żaden z parametrów nie zostanie podany, tablica zostanie skopiowana ze wszystkimi elementami.
Przykład działania:
let myTable = ['Michal','Wojtek','Ala','Filip'];
console.log(myTable.slice(1,2)); // ['Wojtek']
console.log(myTable.slice(0,3)); // ['Michal', 'Wojtek', 'Ala']
console.log(myTable.slice(2)); // ['Ala', 'Filip']
Sumując, jak możecie przeczytać powyżej, mimo podobnych nazw .splice
i .slice
działają w odmienny sposób. Splice idealnie nadaje się do usuwania rekordów z tablicy. Slice sprawdzi się kiedy musimy skopiować część elementów z tablicy a do tablicy b bez ich usuwania.