Der Unterschied wird deutlich, wenn man die Länge der einzelnen Arrays nach der delete
Betreiber und splice()
Methode angewendet werden. Zum Beispiel:
Löschoperator
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
delete trees[3];
console.log(trees); // ["redwood", "bay", "cedar", empty, "maple"]
console.log(trees.length); // 5
El delete
Operator entfernt das Element aus dem Array, aber der "Platzhalter" des Elements bleibt bestehen. oak
wurde entfernt, nimmt aber immer noch Platz im Array ein. Aus diesem Grund bleibt die Länge des Feldes 5.
splice()-Methode
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
trees.splice(3,1);
console.log(trees); // ["redwood", "bay", "cedar", "maple"]
console.log(trees.length); // 4
El splice()
Methode entfernt den Zielwert vollständig y auch den "Platzhalter". oak
wurde entfernt, ebenso wie der Platz, den es im Array belegte. Die Länge des Arrays beträgt nun 4.
4 Stimmen
Para
.splice
in Schleifen, werfen Sie einen Blick auf diese Frage: Löschen aus Array in Javascript .6 Stimmen
@andynormancx Ja, aber diese Antwort wurde erst einen Tag später gepostet und erhielt so viele Stimmen - ich würde sagen, sie ist besser geschrieben, das muss es sein.
0 Stimmen
@andynormancx - Es scheint kein exaktes Duplikat zu sein. Die Frage, die Sie verlinkt haben, fragt im Grunde, warum das Löschen eines Elements aus einem Array (wodurch es spärlich wird) dessen Länge nicht verringert. Diese Frage fragt nach den Unterschieden zwischen
delete
yArray.prototype.splice
.0 Stimmen
@chharvey stimmt zu, aber was noch wichtiger ist, wie kann diese Frage vor 9 Jahren gestellt worden sein! Ich komme mir alt vor, wenn ich hier wieder einen Kommentar abgebe.
0 Stimmen
JavaScript: die ersten 20 Jahre erwähnt "JavaScript 1.1 fügt die delete-, typeof- und void-Operatoren hinzu. In JavaScript 1.1 setzt der delete-Operator seinen Variablen- oder Objekt-Eigenschafts-Operanden einfach auf den Wert null. "& splice wurde in 1.2 hinzugefügt "Die Array-Funktionen push, pop, shift, unshift und splice wurden direkt den gleichnamigen Perl-Array-Funktionen nachempfunden."