Array.prototype.splice în JavaScript

Tablouri (array) Toate browserele, Node.js

Șterge, înlocuiește sau inserează elemente oriunde în tablou, modificând tabloul.

Sintaxă
tablou.splice(inceput, cateSterg, element1, element2, ...)

Ce face Array.prototype.splice

splice pornește de la poziția inceput, șterge cateSterg elemente și pune în locul lor elementele date după aceea. Cu cateSterg egal cu 0 doar inserează.

Tabloul original este modificat. Metoda returnează un tablou cu elementele șterse (gol dacă nu s-a șters nimic). Pentru varianta care nu modifică originalul folosește toSpliced. Nu confunda cu slice, care doar copiază o bucată.

Parametri

Parametru Descriere
inceput Poziția de la care se lucrează. Negativ: de la sfârșit.
cateSterg Opțional. Câte elemente se șterg. Fără el, se șterge tot până la sfârșit.
element1, element2, ... Opțional. Elementele inserate în locul celor șterse.

Ce returnează

Un tablou cu elementele șterse.

Exemple

Exemplul 1: Ștergere, inserare, înlocuire

const zile = ["luni", "marți", "joi", "vineri"];

zile.splice(2, 0, "miercuri");
console.log(zile);

const sterse = zile.splice(-1, 1);
console.log(sterse, zile);

zile.splice(0, 2, "L", "Ma");
console.log(zile);

Rezultat

[ 'luni', 'marți', 'miercuri', 'joi', 'vineri' ]
[ 'vineri' ] [ 'luni', 'marți', 'miercuri', 'joi' ]
[ 'L', 'Ma', 'miercuri', 'joi' ]

Exemplul 2: Ștergerea unui element după id

const sarcini = [{ id: 1, text: "Cumpărături" }, { id: 2, text: "Sală" }, { id: 3, text: "Citit" }];
const poz = sarcini.findIndex((s) => s.id === 2);

if (poz !== -1) sarcini.splice(poz, 1);
console.log(sarcini.map((s) => s.text));

Rezultat

[ 'Cumpărături', 'Citit' ]

Greșeli frecvente

  • Ștergi elemente cu splice într-o buclă for care merge înainte. După fiecare ștergere, elementele se mută și sari peste unele. Parcurge tabloul de la sfârșit sau folosește filter.
  • Folosești delete tablou[i]. Elementul devine o „gaură”, iar lungimea rămâne aceeași; folosește splice(i, 1).

Comenzi înrudite

  • slice: Extrage o bucată dintr-un text sau dintr-un tablou, fără să modifice originalul.
  • Array.prototype.toSpliced: Returnează o copie a tabloului cu elemente șterse, înlocuite sau inserate, fără să modifice originalul.
  • Array.prototype.findIndex: Returnează poziția primului element care îndeplinește o condiție sau -1.