JavaScriptTablice

Array.prototype.toSpliced()

Usuwa, wstawia lub zastępuje elementy w kopii tablicy. Oryginał zostaje bez zmian.

Zwraca
Nową tablicę po zmianach.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const plan = ['HTML', 'CSS', 'PHP', 'JavaScript']

const updated = plan.toSpliced(2, 1, 'Sass')
console.log(updated)
console.log(plan)
Konsola
['HTML', 'CSS', 'Sass', 'JavaScript']
['HTML', 'CSS', 'PHP', 'JavaScript']

Definicja i zastosowanie

#

Metoda toSpliced(start, skipCount, ...items) działa jak splice(), ale zamiast zmieniać tablicę, zwraca nową, już przerobioną. Od indeksu start pomija skipCount elementów, a w ich miejsce wstawia podane wartości. Oryginalna tablica się nie zmienia.

Ważna różnica dotyczy wyniku: splice() zwraca tablicę usuniętych elementów, a toSpliced() całą nową tablicę. Jeśli potrzebujesz też usuniętych elementów, odczytaj je wcześniej przez slice().

Jednym wywołaniem usuniesz element (toSpliced(i, 1)), wstawisz nowy bez usuwania (toSpliced(i, 0, x)) albo zamienisz fragment na inne wartości. Ujemny start liczy pozycję od końca. Metoda należy do rodziny metod kopiujących razem z toSorted(), toReversed() i with().

Składnia

#
Składnia
array.toSpliced(start)
array.toSpliced(start, skipCount)
array.toSpliced(start, skipCount, item1, item2, …)

Parametry

#
  • start

    liczba

    Indeks, od którego zaczynają się zmiany. Ujemny liczy od końca.
  • skipCount

    opcjonalny

    Liczba elementów, które nie trafią do kopii. Pominięty oznacza wszystko od start do końca.
  • item1…itemN

    opcjonalne

    Elementy wstawiane do kopii w miejscu start.

Więcej przykładów

#
Usuwanie i wstawianie
JavaScript
const queue = ['Ania', 'Kuba', 'Ola']

console.log(queue.toSpliced(1, 1))
console.log(queue.toSpliced(1, 0, 'Zosia'))
console.log(queue.toSpliced(-1))
Konsola
['Ania', 'Ola']
['Ania', 'Zosia', 'Kuba', 'Ola']
['Ania', 'Kuba']
Wynik splice() a toSpliced()
JavaScript
const tasks = ['Quiz', 'Projekt', 'Test']

const copy = tasks.toSpliced(0, 1)
const removed = tasks.splice(0, 1)

console.log(copy)
console.log(removed)
console.log(tasks)
Konsola
['Projekt', 'Test']
['Quiz']
['Projekt', 'Test']

toSpliced() oddało nową tablicę i nie ruszyło tasks. Dopiero splice() zmieniło oryginał i zwróciło to, co z niego usunęło.

Obsługa przeglądarek

#

Szeroko dostępne · od 2023 roku

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Do usunięcia elementu po indeksie, np. w stanie komponentu React, wystarczy items.toSpliced(index, 1). Nie potrzebujesz kopiowania przez spread ani filter() z porównywaniem indeksów.
  • Nie myl wyników: toSpliced() zwraca nową tablicę, a splice() tablicę usuniętych elementów.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.