Array kopieren

August 14th, 2007 15:23 Uhr von Ronald

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?

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists

Geschrieben in JavaScript | 5 Kommentare »

5 Kommentare

  1. Sven Sagt:

    Für eindimesionale Arrays: var arr2 = arr1.slice(0);
    Für mehrdimensionale Arrays: var arr2 = eval(arr1.toSource());

  2. Sven Sagt:

    Und: var arr1 = new Array(); kann man auch als var arr1 = []; schreiben .. spart Tipperei ;)

  3. Ronald Sagt:

    Ebenfalls interessant, danke! Wobei eval() natürlich immer ein Performancefresser ist.

  4. Ronald Sagt:

    Und: var arr1 = new Array(); kann man auch als var arr1 = []; schreiben .. spart Tipper

    Jau, aber “new Array()” ist in dem Fall übersichtlicher bzw. eindeutiger für nicht so geübte Leser. :-)

  5. Sergej Sagt:

    Hehehe, zwei Doofe (fast) ein Gedanke :)
    JavaScript-Arrays kopieren

Einen Kommentar abgeben

Bitte beachte: Die Kommentare werden moderiert. Dies kann zu Verzögerungen bei Deinem Kommentar führen. Es besteht kein Grund den Kommentar erneut abzuschicken.

*
To prove you're a person (not a spam script), type the answer to the math equation shown in the picture. Click on the picture to hear an audio file of the equation.
Click to hear an audio file of the anti-spam equation