2192 Stimmen

Wie kann ich ein Array in JavaScript leeren?

Gibt es eine Möglichkeit, ein Array zu leeren und wenn ja, möglicherweise mit .remove() ?

Zum Beispiel,

A = [1,2,3,4];

Wie kann ich das leeren?

66voto

kenshou.html Punkte 940

Leistungstest:

http://jsperf.com/array-clear-methods/3

a = []; // 37% slower
a.length = 0; // 89% slower
a.splice(0, a.length)  // 97% slower
while (a.length > 0) {
    a.pop();
} // Fastest

38voto

Alireza Punkte 92209

Sie können ganz einfach eine Funktion erstellen, die das für Sie erledigt, indem Sie die Länge oder fügen Sie es sogar zu natives Array als remove() Funktion zur Wiederverwendung.

Stellen Sie sich vor, Sie haben dieses Array:

var arr = [1, 2, 3, 4, 5]; //the array

OK, führen Sie dies einfach aus:

arr.length = 0; //change the length

und das Ergebnis ist:

[] //result

einfache Möglichkeit, ein Array zu leeren...

Auch mit Schleife, die nicht notwendig ist, sondern nur eine andere Möglichkeit, dies zu tun:

/* could be arr.pop() or arr.splice(0)
don't need to return as main array get changed */

function remove(arr) {
  while(arr.length) {
    arr.shift(); 
  }
}

Es gibt auch knifflige Möglichkeiten, über die man nachdenken kann, zum Beispiel so etwas wie das hier:

arr.splice(0, arr.length); //[]

Wenn arr also 5 Elemente hat, werden 5 Elemente von 0 aus gespleißt, was bedeutet, dass nichts im Array übrig bleibt.

Es gibt auch andere Möglichkeiten, wie z. B. die einfache Neuzuweisung des Arrays:

arr = []; //[]

Wenn Sie sich die Array-Funktionen ansehen, gibt es viele andere Möglichkeiten, dies zu tun, aber die am meisten empfohlene könnte die Änderung der Länge sein.

Wie ich an erster Stelle sagte, können Sie auch Prototyp remove(), wie es die Antwort auf Ihre Frage ist. Sie können einfach wählen Sie eine der Methoden oben und Prototyp es Array-Objekt in JavaScript, etwas wie:

Array.prototype.remove = Array.prototype.remove || function() {
  this.splice(0, this.length);
};

und Sie können es einfach wie folgt aufrufen, um ein beliebiges Array in Ihrer Javascript-Anwendung zu leeren:

arr.remove(); //[]

37voto

leech Punkte 8138

Sie können dies zu Ihrer JavaScript-Datei hinzufügen, damit Ihre Arrays "c" sein können

Array.prototype.clear = function() {
    this.splice(0, this.length);
};

Dann können Sie es so verwenden:

var list = [1, 2, 3];
list.clear();

Oder wenn Sie sichergehen wollen, dass Sie nichts zerstören:

if (!Array.prototype.clear) {
    Array.prototype.clear = function() {
       this.splice(0, this.length);
    };
}

Viele Leute sind der Meinung, dass man native Objekte (wie Array) nicht verändern sollte, und ich bin geneigt, dem zuzustimmen. Bitte seien Sie vorsichtig, wenn Sie entscheiden, wie Sie dies handhaben.

20voto

Laxmikant Dange Punkte 7347

Wenn Sie Folgendes verwenden

a = []; 

Dann weisen Sie neue Array-Referenz zu a, wenn Referenz in a bereits eine andere Variable zugeordnet ist, dann wird es nicht leer, dass Array zu und damit Garbage Collector nicht sammeln, dass Speicher.

Zum Beispiel.

var a=[1,2,3];
var b=a;
a=[];
console.log(b);// It will print [1,2,3];

oder

a.length = 0;

Wenn wir angeben a.length Wir setzen nur die Grenzen des Arrays zurück und der Speicher für die restlichen Arrayelemente wird vom Garbage Collector verbunden.

Stattdessen sind diese beiden Lösungen besser.

a.splice(0,a.length)

y

while(a.length > 0) {
    a.pop();
}

Wie in der vorherigen Antwort von kenshou.html beschrieben, ist die zweite Methode schneller.

19voto

Bendegúz Punkte 748
Array.prototype.clear = function() {
    this.length = 0;
};

Und nennen Sie es: array.clear();

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