L' deleteoperatore viene utilizzato per rimuovere proprietà dagli oggetti.
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
Si noti che, per gli array, ciò non equivale alla rimozione di un elemento . Per rimuovere un elemento da un array, utilizzare Array#spliceo Array#pop. Per esempio:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
Dettagli
deletein JavaScript ha una funzione diversa da quella della parola chiave in C e C ++: non libera direttamente la memoria. Invece, il suo unico scopo è rimuovere le proprietà dagli oggetti.
Per gli array, l'eliminazione di una proprietà corrispondente a un indice crea un array sparse (ovvero un array con un "buco" al suo interno). La maggior parte dei browser rappresenta questi indici di array mancanti come "vuoti".
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Si noti che deletenon si trasferisce array[3]in array[2].
Diverse funzioni integrate in JavaScript gestiscono le matrici sparse in modo diverso.
for...in salterà completamente l'indice vuoto.
forVerrà restituito un ciclo tradizionale undefinedper il valore nell'indice.
Qualsiasi metodo utilizzato Symbol.iteratorrestituirà undefinedil valore nell'indice.
forEach, mapE reducesarà semplicemente ignorare l'indice mancante.
Pertanto, l' deleteoperatore non deve essere utilizzato per il caso d'uso comune di rimozione di elementi da un array. Gli array dispongono di metodi dedicati per la rimozione di elementi e la riallocazione della memoria: Array#splice()e Array#pop.
Array # splice (start [, deleteCount [, item1 [, item2 [, ...]]]])
Array#splicemuta l'array e restituisce tutti gli indici rimossi. deleteCountgli elementi vengono rimossi dall'indice starte item1, item2... itemNinseriti nell'array dall'indice start. Se deleteCountviene omesso, gli elementi da startIndex vengono rimossi fino alla fine dell'array.
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
C'è anche un nome simile, ma diverso, funzione Array.prototype: Array#slice.
Array # slice ([inizio [, fine]])
Array#slicenon è distruttivo e restituisce un nuovo array contenente gli indici indicati da starta end. Se endnon specificato, viene impostato automaticamente alla fine dell'array. Se endè positivo, specifica l' indice non inclusivo in base zero a cui fermarsi. Se endè negativo, specifica l'indice a cui fermarsi contando alla fine dell'array (es. -1 ometterà l'indice finale). Se end <= start, il risultato è un array vuoto.
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
Array # pop
Array#poprimuove l'ultimo elemento da un array e restituisce quell'elemento. Questa operazione modifica la lunghezza dell'array.