1451 Stimmen

Löschen von Array-Elementen in JavaScript - Löschen vs. Spleißen

Was ist der Unterschied zwischen der Verwendung von die delete Betreiber auf das Array-Element im Gegensatz zur Verwendung von die Array.splice Methode ?

Zum Beispiel:

myArray = ['a', 'b', 'c', 'd'];

delete myArray[1];
//  or
myArray.splice (1, 1);

Warum überhaupt die Splice-Methode, wenn ich Array-Elemente löschen kann, wie ich mit Objekten kann?

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 y Array.prototype.splice .

1voto

Alireza Punkte 92209

OK, stellen Sie sich vor, wir haben dieses Feld unten:

const arr = [1, 2, 3, 4, 5];

Lassen Sie uns zuerst das Löschen durchführen:

delete arr[1];

und das ist das Ergebnis:

[1, empty, 3, 4, 5];

leer! und los geht's:

arr[1]; //undefined

Das heißt, es wird nur der Wert gelöscht und es ist undefiniert jetzt, so dass die Länge die gleiche ist, auch wird es zurückgegeben vrai ...

Setzen wir unser Array zurück und machen es dieses Mal mit Splice:

arr.splice(1, 1);

und das ist dieses Mal das Ergebnis:

[1, 3, 4, 5];

Wie Sie sehen, hat sich die Länge des Arrays geändert und arr[1] es 3 Nun...

Auch hier wird das gelöschte Element in einem Array zurückgegeben, das [3] In diesem Fall...

0voto

Idan Gozlan Punkte 3023

Befindet sich das zu löschende Element in der Mitte (z. B. soll das Element "c" gelöscht werden, dessen Index 1 ist), können Sie es verwenden:

var arr = ['a','b','c'];
var indexToDelete = 1;
var newArray = arr.slice(0,indexToDelete).combine(arr.slice(indexToDelete+1, arr.length))

0voto

Prashanth Punkte 431

Der einfachste Weg ist wahrscheinlich

var myArray = ['a', 'b', 'c', 'd'];
delete myArray[1]; // ['a', undefined, 'c', 'd']. Then use lodash compact method to remove false, null, 0, "", undefined and NaN
myArray = _.compact(myArray); ['a', 'c', 'd'];

Ich hoffe, das hilft. Referenz: https://lodash.com/docs#compact

1 Stimmen

Sollte jemand über diese Seite stolpern und sich über compact ... keine Notwendigkeit für Lodash. Versuchen Sie myArray.filter(function(n){return n;})

0voto

Ricky Levi Punkte 6106

Für diejenigen, die Folgendes verwenden möchten Lodash verwenden können: myArray = _.without(myArray, itemToRemove)

Oder wie ich in Angular2 verwenden

import { without } from 'lodash';
...
myArray = without(myArray, itemToRemove);
...

0voto

Srikrushna Punkte 3387

löschen delete: löscht die Objekteigenschaft, indexiert aber nicht neu das Array neu indizieren oder seine Länge aktualisieren. Dies lässt es so erscheinen, als ob es undefiniert:

Spleiß : Entfernt das Element, indiziert das Array neu und ändert seine Länge.

Element vom letzten löschen

arrName.pop();

Element vom ersten löschen

arrName.shift();

Aus der Mitte löschen

arrName.splice(starting index,number of element you wnt to delete);

Ex: arrName.splice(1,1);

Ein Element vom letzten löschen

arrName.splice(-1);

Löschen mit Hilfe der Array-Indexnummer

 delete arrName[1];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X