Dies ist eine der schnellsten und einfachsten Methoden, ein Array zu leeren. Natürlich gibt es viele andere Wege, aber diese beinhalten normalerweise die Erstellung eines neuen Arrays. Auf diese Weise verwenden Sie dasselbe Array wieder.
var myArray = ["one", "two", "three"];
// console.log( myArray ) => ["one", "two", "three"]
myArray.length = 0;
// console.log( myArray ) => []
ist nicht
myArray = [];
genauso gut?
Nicht, wenn Sie Referenzen auf das Array herumliegen haben...
Ich wette, das
myArray.length = 0;funktioniert nicht in allen Browsern, in denen das oben genannte Snippet funktioniert.
Ausgezeichneter Code, myArray.empty() funktioniert auch.
es ist kein Standard-Prototype des Array-Konstruktors.
Zumindest nicht in den neuesten WebKit-Browsern.
nicht wirklich – funktioniert nicht in einigen Browsern
myArray=[]; ist ausgezeichnet
Ha, mach einfach
arrayobj.splice(0,arrayobj.length).Sie können das sogar zu einem Prototypen hinzufügen als
Array.prototype.empty() {this.splice(0,this.length);}
und Sie sind fertig.
Ich glaube
myArray = [];
/* oder */
myArray = new Array();
Wäre das Beste, da es browserübergreifend funktioniert.
Stellen Sie sicher, dass Sie verstehen, was das wirklich bedeutet. Sie erstellen eine NEUE INSTANZ und verwenden nicht dasselbe Array. Dies kann zu viel Spaß beim Debuggen führen, wenn Sie sich dessen nicht bewusst sind, wenn Referenzen auf das ursprüngliche Array vorhanden sind.
auch hier gilt: wenn Sie eine Referenz haben, ist sie verloren...
Das Problem mit myArray = [] und myArray = new Array() ist, dass Sie technisch gesehen das Array nicht leeren, sondern stattdessen ein neues Array erstellen. Das Erstellen neuer Arrays ist für Browser etwas aufwendig, daher ist das einfache Setzen der Array-Länge auf 0 wahrscheinlich am besten.
Keines der Beispiele funktioniert
Von den obigen habe ich nur das Leeren eines Arrays durch Splicing getestet und es hat perfekt funktioniert.
Hier ist ein jsPerf-Testfall: http://jsperf.com/emptying-arrays
Alter Thread, aber hier sind meine zwei Cents
Wie der obige jsPerf-Testfall zeigt, ist die Erstellung eines neuen Arrays SCHNELLER als das Setzen der Länge auf 0. Der Grund dafür ist, dass die meisten integrierten Funktionen und Konstruktoren für JS heutzutage dazu neigen, nativen Code unter der Oberfläche zu verwenden, um zu optimieren (dank nicht zuletzt der Tatsache, dass JavaScript so beliebt geworden ist). Dies ist zumindest in Chrome der Fall, obwohl ich es für andere Browser nicht garantieren kann.
Kurz gesagt, bleiben Sie bei der Erstellung neuer Arrays – alte Tricks wie diese sind heutzutage nicht mehr wirklich notwendig.
Schon wieder verfehlen Sie den Punkt. Das Erstellen eines neuen Arrays bricht alle Referenzen auf dieses Array.
PS Splicing ist mit Abstand das Schlimmste: http://jsperf.com/emptying-arrays/4
Trotzdem gibt es einen Fehler in beiden Ihrer Methoden.
Ein einfaches Beispiel ist der Versuch mit
var a = [“one”,”two”,”three”];
a = [];
a = new Array();
var a = [“four”,”five”,”six”];
a.join(‘*’);
console.log(a); // Jetzt erwarten wir die Ausgabe als four*five*six.
Aber die Ausgabe wird ***four*five*six sein. Was niemals ein korrektes Verfahren ist. Ich suche nach einer perfekten Lösung, die in allen Browsern funktioniert. Bitte lassen Sie es mich wissen, wenn einer von Ihnen eine hat.
Ich weiß, dass Ihr Beitrag über ein Jahr her ist, aber dieses Snippet funktionierte wie erwartet in Internet Explorer 8 und Firefox 21.
Diese Lösung funktioniert für mich am besten
var sounds = new Array(“a”,”b”,”c”);
//gibt ein leeres Array zurück
Ich habe stundenlang danach gesucht. Vielen Dank dafür