Le site delete
Operator wird verwendet, um Eigenschaften von Objekten zu entfernen.
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
Beachten Sie, dass bei Arrays, dies ist nicht dasselbe wie das Entfernen eines Elements . Um ein Element aus einem Array zu entfernen, verwenden Sie Array#splice
o Array#pop
. Zum Beispiel:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
Detalles
delete
in JavaScript hat eine andere Funktion als das Schlüsselwort in C und C++: Es gibt nicht direkt Speicher frei. Stattdessen besteht sein einziger Zweck darin, Eigenschaften von Objekten zu entfernen.
Bei Arrays erzeugt das Löschen einer Eigenschaft, die einem Index entspricht, ein spärliches Array (d.h. ein Array mit einem "Loch" darin). Die meisten Browser stellen diese fehlenden Array-Indizes als "leer" dar.
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Beachten Sie, dass delete
siedelt nicht um array[3]
en array[2]
.
Verschiedene integrierte Funktionen in JavaScript behandeln spärliche Arrays unterschiedlich.
-
for...in
wird der leere Index komplett übersprungen.
-
Eine traditionelle for
Schleife wird zurückgegeben undefined
für den Wert am Index.
-
Jede Methode, die Symbol.iterator
wird zurückgegeben undefined
für den Wert am Index.
-
forEach
, map
et reduce
wird der fehlende Index einfach übersprungen.
Also, die delete
Operator sollte nicht für den üblichen Anwendungsfall des Entfernens von Elementen aus einem Array verwendet werden. Arrays haben eigene Methoden zum Entfernen von Elementen und zur Neuzuweisung von Speicher: Array#splice()
et Array#pop
.
Array#splice(start[, deleteCount[, item1[, item2[, ...]]]])
Array#splice
ändert das Array und gibt alle entfernten Indizes zurück. deleteCount
Elemente werden aus dem Index entfernt start
y item1, item2... itemN
werden in das Array ab dem Index start
. Wenn deleteCount
weggelassen wird, werden die Elemente ab startIndex bis zum Ende des Arrays entfernt.
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
Es gibt auch eine ähnlich benannte, aber andere Funktion unter Array.prototype
: Array#slice
.
Array#Slice([Anfang[, Ende]])
Array#slice
ist nicht destruktiv und gibt ein neues Array zurück, das die angegebenen Indizes von start
zu end
. Wenn end
nicht angegeben wird, wird standardmäßig das Ende des Arrays verwendet. Wenn end
positiv ist, gibt es die Null-basierte nicht-inklusive Index, bei dem angehalten werden soll. Wenn end
negativ ist, gibt es den Index an, bei dem vom Ende des Arrays zurück gezählt wird (z.B. -1 lässt den letzten Index aus). Wenn end <= start
ist das Ergebnis ein leeres Array.
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#pop
entfernt das letzte Element aus einem Array und gibt dieses Element zurück. Dieser Vorgang ändert die Länge des Arrays.
0 Stimmen
Delete myObject.regex; // oder, delete myObject['regex']; // oder, var prop = "regex"; delete myObject[prop];