unshift() w JavaScript - Jak dodawać na początek tablicy?

Tablica colors: indeks 1 wskazuje na wartość "green". To jak js unshift, dodaje element na początek.

Napisano przez

Alex Jabłoński

Opublikowano

18 kwi 2026

Spis treści

Chodzi o prosty, ale bardzo użyteczny mechanizm: dodanie jednego lub kilku elementów na początek tablicy bez ręcznego przebudowywania indeksów. Pokażę, jak działa `unshift()`, co zwraca, kiedy zachowuje się inaczej, niż wielu początkujących zakłada, oraz jak odróżnić sytuacje, w których lepiej użyć innego podejścia. To przydaje się zarówno w ćwiczeniach z tablicami, jak i w kodzie interfejsu, gdzie kolejność elementów ma znaczenie.

Najważniejsze fakty o dodawaniu na początek tablicy

  • `unshift()` wstawia elementy na początek tablicy i zmienia oryginał.
  • Zwraca nową długość tablicy, a nie samą tablicę.
  • Jeśli podasz kilka argumentów naraz, zostaną dodane w tej samej kolejności.
  • Wiele pojedynczych wywołań może dać inny wynik niż jedno wywołanie z kilkoma argumentami.
  • Gdy nie chcesz mutować danych, lepiej sprawdzi się nowa tablica tworzona przez spread albo `toSpliced()`.

Jak działa metoda `unshift()` w tablicy

Mechanika jest prosta: metoda przesuwa istniejące elementy w prawo, a na początku zapisuje nowe wartości. Oryginalna tablica zostaje zmieniona, więc nie dostajesz kopii, tylko tę samą strukturę danych po modyfikacji. W praktyce traktuję ją jako narzędzie do list, które naturalnie rosną od najnowszego wpisu, na przykład historii aktywności, kolejki powiadomień albo listy ostatnio używanych elementów.

To ważne, bo od razu wyjaśnia dwa rzeczywiste skutki: zmienia się zawartość tablicy i zmienia się jej długość. Z tego właśnie wynika też sposób zapisu i to, jak interpretować wynik działania tej metody.

Składnia i zwracana wartość

Sama składnia jest krótka, ale warto ją czytać dokładnie, bo tu najłatwiej o pomyłkę:

tablica.unshift(element1, element2, element3);

Najważniejszy szczegół brzmi tak: metoda zwraca nową długość tablicy, a nie nową tablicę. Jeśli więc zapiszesz wynik do zmiennej, dostaniesz liczbę, nie listę elementów. To jeden z tych błędów, które widuję często u osób uczących się JavaScriptu.

const koszyk = ["mleko", "chleb"];
const nowaDlugosc = koszyk.unshift("masło");

console.log(nowaDlugosc); // 3
console.log(koszyk); // ["masło", "mleko", "chleb"]

Technicznie metoda jest generyczna, więc da się ją wywołać także na obiektach podobnych do tablicy, jeśli mają `length` i indeksy numeryczne. W codziennym kodzie zwykle i tak pracuje się po prostu na zwykłych tablicach. Kiedy już to masz, najlepiej zobaczyć zachowanie metody na kilku krótkich przykładach.

Przykłady, które pokazują najważniejsze zachowania

Jeden element na początek

const liczby = [2, 3];
liczby.unshift(1);

console.log(liczby); // [1, 2, 3]

To najbardziej podstawowy wariant. Wstawiasz jeden element i od razu widzisz, że trafia przed wszystko, co już było w tablicy.

Kilka elementów naraz

const liczby = [4, 5, 6];
liczby.unshift(1, 2, 3);

console.log(liczby); // [1, 2, 3, 4, 5, 6]

Tu widać ważną rzecz: jeśli dodajesz kilka wartości w jednym wywołaniu, ich kolejność zostaje zachowana. To praktyczniejsze niż wielokrotne wywołania, bo nie trzeba potem odwracać wyniku w głowie.

Dlaczego kolejność bywa myląca

const liczby = [4, 5, 6];
liczby.unshift(1);
liczby.unshift(2);
liczby.unshift(3);

console.log(liczby); // [3, 2, 1, 4, 5, 6]

To klasyczna pułapka. Każde kolejne wywołanie dopisuje element przed aktualnym początkiem tablicy, więc ostatni dodany ląduje na samym froncie. Jeżeli chcesz zachować naturalny porządek, użyj jednego wywołania z wieloma argumentami.

Przeczytaj również: JS defer - klucz do szybszej strony? Sprawdź, jak to działa!

To nie jest automatyczne spłaszczanie tablic

const lista = [10, 20];
lista.unshift([1, 2]);

console.log(lista); // [[1, 2], 10, 20]

Ten przykład dobrze pokazuje, że metoda nie „rozpakowuje” tablicy przekazanej jako argument. Wstawia ją jako pojedynczy element, więc jeśli chcesz innego efektu, musisz go przygotować świadomie. Właśnie dlatego ten temat tak dobrze łączy się z porównaniem innych metod pracy z tablicami.

Czym różni się od `push()`, `shift()` i `splice()`

Najprościej myśleć o tym tak: `unshift()` dodaje na początek, `push()` dodaje na koniec, a `shift()` usuwa pierwszy element. `splice()` jest bardziej wszechstronne, bo pozwala wstawiać elementy w dowolnym miejscu, ale przez to bywa mniej czytelne, jeśli Twoim jedynym celem jest dopisanie wartości na start.

Metoda Co robi Czy mutuje tablicę Kiedy wybrać
unshift() Dodaje elementy na początek Tak Gdy nowy element ma trafić na front listy
push() Dodaje elementy na koniec Tak Gdy kolejność rośnie od początku do końca
shift() Usuwa pierwszy element Tak Gdy zdejmujesz element z początku kolejki
splice(0, 0, ...) Wstawia elementy na wskazanej pozycji, tu na początku Tak Gdy potrzebujesz większej kontroli nad miejscem wstawienia
[element, ...tablica] Tworzy nową tablicę z elementem na początku Nie Gdy chcesz uniknąć mutacji i zachować oryginał
toSpliced(0, 0, ...) Tworzy nową tablicę z wstawieniem na początku Nie Gdy pracujesz w nowoczesnym kodzie i zależy Ci na niemutowaniu

W praktyce wybór sprowadza się do dwóch pytań: czy chcesz zmieniać oryginał i czy naprawdę potrzebujesz wstawiania na początek, czy tylko nowej tablicy z takim samym efektem. Jeśli odpowiedź brzmi „nie chcę mutować”, wersja ze spreadem albo `toSpliced()` jest często czytelniejsza niż klasyczne operacje modyfikujące.

Najczęstsze błędy i rozsądne zamienniki

  • Mylenie wyniku z tablicą. `unshift()` zwraca liczbę, więc nie przypisuj jej do zmiennej, jeśli później chcesz używać listy elementów.
  • Zakładanie, że wiele pojedynczych wywołań da ten sam efekt co jedno wywołanie z kilkoma argumentami. Nie da.
  • Nieświadoma mutacja współdzielonego stanu. Jeśli ta sama tablica jest używana w kilku miejscach, zmiana będzie widoczna wszędzie.
  • Traktowanie tej metody jako automatycznie wygodnej dla bardzo dużych tablic. Im więcej elementów trzeba przesunąć, tym mniej naturalnie wygląda taki model pracy.

Z mechaniki tej metody wynika prosty kompromis: im większa tablica i im częściej dopisujesz z przodu, tym mniej wygodne staje się to podejście. To nie jest powód, żeby unshiftu unikać zawsze, tylko sygnał, żeby świadomie dobrać narzędzie. W kodzie UI często wolę wersję niemutującą, na przykład `const nowa = [nowyElement, ...stara]` albo `stara.toSpliced(0, 0, nowyElement)`, bo wtedy łatwiej kontrolować przepływ danych.

Kiedy `unshift()` jest najprostszym wyborem

Jeśli chcesz zapamiętać jedną rzecz, zapamiętaj tę: `unshift()` jest prosty, ale zmienia oryginalną tablicę i zwraca liczbę. Reszta to kwestia wyboru między wygodą a kontrolą nad stanem. Dla list, które mają być czytane od najnowszego elementu, to nadal bardzo sensowne narzędzie.

  • Używaj go, gdy element naprawdę powinien trafić na początek listy.
  • Podawaj wiele wartości naraz, jeśli mają zachować naturalny porządek.
  • W kodzie bez mutacji wybieraj spread albo `toSpliced()`.

Na ćwiczeniach najlepiej sprawdza się prosty test w konsoli: tworzysz małą tablicę, dodajesz jeden element, potem kilka, a na końcu sprawdzasz, co metoda zwróciła. Taki krótki eksperyment dobrze utrwala intuicję i później oszczędza błędów w prawdziwym projekcie.

FAQ - Najczęstsze pytania

unshift() to metoda tablicy w JavaScript, która dodaje jeden lub więcej elementów na początek istniejącej tablicy. Zmienia ona oryginalną tablicę i zwraca jej nową długość.

Tak, unshift() jest metodą mutującą. Oznacza to, że zmienia ona bezpośrednio tablicę, na której została wywołana, zamiast tworzyć jej nową kopię. Należy o tym pamiętać, aby uniknąć nieoczekiwanych skutków ubocznych.

Metoda unshift() zwraca nową długość tablicy po dodaniu elementów. Nie zwraca ona zmodyfikowanej tablicy, co jest częstym błędem wśród początkujących programistów.

unshift() dodaje elementy na początek tablicy, natomiast push() dodaje je na koniec. Obie metody mutują oryginalną tablicę i zwracają jej nową długość.

Spread operator (`[element, ...tablica]`) jest lepszym wyborem, gdy chcesz dodać elementy na początek tablicy, ale jednocześnie uniknąć mutowania oryginalnej tablicy. Tworzy on nową tablicę z dodanymi elementami, pozostawiając oryginał bez zmian.

Oceń artykuł

Ocena: 0.00 Liczba głosów: 0

Tagi:

js unshift javascript unshift unshift array

Udostępnij artykuł

Alex Jabłoński

Alex Jabłoński

Nazywam się Alex Jabłoński i od 9 lat zajmuję się programowaniem webowym. Moja przygoda z tą dziedziną zaczęła się od prostych projektów, które z czasem przerodziły się w pasję do tworzenia użytecznych i estetycznych aplikacji internetowych. Fascynuje mnie nie tylko sam proces kodowania, ale także to, jak technologie wpływają na nasze życie i jak możemy je wykorzystać, aby rozwiązywać codzienne problemy. Piszę o różnych aspektach programowania, od podstawowych języków po bardziej zaawansowane techniki i narzędzia. Staram się, aby moje teksty były przystępne i zrozumiałe, a skomplikowane zagadnienia przedstawiam w prosty sposób. Regularnie śledzę nowinki w branży, co pozwala mi dostarczać aktualne i rzetelne informacje. Moim celem jest nie tylko edukacja, ale także inspirowanie innych do rozwijania swoich umiejętności w programowaniu.

Napisz komentarz