Kopie eines Arrays erzeugen und umdrehen
Ed X
- javascript
0 Slyh
Hallo an alle,
es klingt so einfach, aber ich komme nicht weiter.
Ich habe ein Array und möchte davon eine Kopie erzeugen, die umgedreht ist. Dafür gibt es die Funktion .reverse(). und diese versaut mir gerade etwas den Tag.
ein Beispiel:
function arrays()
{
var nums = new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
alert(nums);
revnums = nums.reverse();
alert(nums + '\n' + revnums);
}
Wenn man das ausprobiert, wird man feststellen, dass nicht nur revnums sondern auch nums gedreht ist.
Selbst wenn man erst die Kopie erzeugt und dann dreht(in 2 Schritten) geschieht das Selbe. Und der Gipfel ist, es ist absolut egal welchen Vektor man dreht, es sind immer beide betroffen.
Man könnte die Dinger von Hand drehen(for Schleife), aber als überzeugter Pazifist weigere ich mich mit Kanonen auf Spatzen zu schießen.
Hat jemand eine besssere Idee?
Bye Ed X
Hi,
Ich habe ein Array und möchte davon eine Kopie erzeugen, die umgedreht ist. Dafür gibt es die Funktion .reverse(). und diese versaut mir gerade etwas den Tag.
ein Beispiel:function arrays()
{
var nums = new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
alert(nums);
revnums = nums.reverse();
alert(nums + '\n' + revnums);
}Wenn man das ausprobiert, wird man feststellen, dass nicht nur revnums sondern auch nums gedreht ist.
Selbst wenn man erst die Kopie erzeugt und dann dreht(in 2 Schritten) geschieht das Selbe. Und der Gipfel ist, es ist absolut egal welchen Vektor man dreht, es sind immer beide betroffen.
Das ist so, weil du mit "revnums = nums" nicht etwa das Array kopierst, sondern vielmehr den Zeiger
auf die Daten in revnums kopierst. Sowohl revnums als auch nums zeigen jetzt auf die selbe Speicherstelle.
Revnums zeigt also genau dieselben Daten wie nums sind, weil es genau dieselben Daten sind.
Wenn du ein Array kopieren willst, kannst du das mit der Methode "slice" machen:
--
revnums = nums.slice(0, nums.length);
revnums.reverse();
--
Hier werden alle Array-Emente von Element 0 beginnend in das Array revnums geschrieben und anschließen
umgedreht.
<../../tecc.htm#a9>
Gruß,
Slyh