Komischerweise ist es bei JavaScript anscheinend so, dass man ein Array nicht auf herkömmliche Art und Weise duplizieren kann. Also bei folgendem Beispiel wird lediglich eine Referenz erzeugt:
var arr1 = new Array(); var arr2 = arr1;
Änderungen an arr2 würden, der Referenz sei Dank, also immer auch arr1 betreffen. Ich hab lange forschen müssen, aber die einizge (einfache) Lösung erscheint mir ein Trick mit concat() zu sein.
var arr1 = new Array(); var arr2 = arr1.concat()
An arr1 wird also ein leeres Array angehängt was bewirkt, dass ein komplett neues Array mit dem Inhalt von arr1 erzeugt wird. Raffiniert und wirkungsvoll. Nur halt ein bisschen umständlich… Andere Lösungsvorschläge?
[Gesamt: 0 Durchschnitt: 0]
Für eindimesionale Arrays: var arr2 = arr1.slice(0);
Für mehrdimensionale Arrays: var arr2 = eval(arr1.toSource());
Und: var arr1 = new Array(); kann man auch als var arr1 = []; schreiben .. spart Tipperei ;)
Ebenfalls interessant, danke! Wobei eval() natürlich immer ein Performancefresser ist.
Jau, aber „new Array()“ ist in dem Fall übersichtlicher bzw. eindeutiger für nicht so geübte Leser. :-)
Hehehe, zwei Doofe (fast) ein Gedanke :)
JavaScript-Arrays kopieren