Hauptmenü

Untermenü

JavaScript - Arrays - Das Ding mit der Verarbeitung

1. Die Abschnitte

2. Schleifen

Im vorherigen Abschnitt habe ich schon auf ein paar Probleme hingewiesen, wenn es um die Ermittlung der Länge eines Arrays geht. Daher sollte man eine for-Schleife nur dann nutzen, wenn man sich gaaaaaanz sicher ist, dass der Index fortlaufend durchnummeriert ist. Und natürlich mit 0 anfängt.


mein_array    = new Array ();
mein_array[0] = 'bla';
mein_array[1] = 'blubb';
mein_array[2] = 'blubber';
for (0mein_array.lengthi++)

Ansonsten sollte man lieber die sichere Variante, nämlich die for...in-Schleife benutzen, die in etwa mit foreach aus PHP gleichzusetzen ist. Dabei enthält die "Zählervariable" den Wert des Indexes. Auf dessen Inhalt kann man dann wie gewohnt zugreifen:


mein_array          = new Array ();
mein_array[0]       = 'bla';
mein_array[3]       = 'blubb';
mein_array['laber'] = 'blubber';
for (i in mein_array)
{
  alert ('-' mein_array[i]);
}

Ein Hinweis

Mittlerweile gibt es auch seit JavaScript 1.7 ein foreach. Allerdings kommen (natürlich) der Internet Explorer und auch der Opera sowie der Safari nicht damit klar, da sie noch eine ältere JavaScript-Version beinhalten.

3. Wegballern und plattmachen

Will man Elemente aus einem Array entfernen, die nicht am Anfang oder Ende stehen, so muss man mit delete arbeiten.


mein_array            = new Array ();
mein_array['bla']     = 'laber';
mein_array['blubb']   = 'schwall';
mein_array['blubber'] = 'jodelblah';
delete mein_array['blubb'];

Das klappt eigentlich auch ganz gut, man muss aber auf zwei Dinge achten. Bei einem durchnummeriertem Index fehlt dann auf einmal ein Wert (wie auch in PHP). Leider kann man dann das Array nicht einfach neu sortieren, wie es zum Beispiel in PHP mit array_values möglich ist. Stattdessen muss man es anschließend komplett durchlaufen und neu aufbauen.

Die zweite Geschichte ist die mit der Ausgabe über alert. Da bekommt man dann eine leere Ausgabe, wo vorher noch das Element war. Lasst euch davon nicht irritieren, so wie es bei mir der Fall war. Ich habe da die lächerlichsten Schlüsse aus dieser Ausgabe gezogen und viel, viel Zeit mit der Ursachenforschung verschwendet. Nehmt dieses seltsame Verhalten einfach als gottgegeben hin. Obwohl ja wohl eher der Teufel für diese Sprache verantwortlich ist.


mein_array    = new Array ();
mein_array[0] = 'laber';
mein_array[1] = 'schwall';
mein_array[2] = 'jodelblah';
delete mein_array[1];
alert (mein_array);

...ergibt ein laber,,jodelblah. Trotzdem hat das Array nur noch zwei Elemente. Das könnt ihr wunderbar mit einer for...in-Schleife überprüfen.

4. Zahlensalat

Passt um Gottes Willen höllisch auf (schöner Widerspruch), wie ihr Zahlen als Werte in Arrays schreibt, da könnt ihr derbe auf die Fresse fallen. Und zwar dann, wenn ihr nicht wisst, wie viele Einträge es sind. Ein kleines Beispiel.


mein_array    = new Array ();
mein_array[0] = new Array (6,5);
mein_array[1] = new Array (4,7,2,9);
mein_array[2] = new Array (3);

So jetzt fragt mal spaßeshalber die Anzahl der jeweiligen Einträge über length ab. Bei mein_array[0] bekommt ihr eine 2, bei mein_array[1] eine 4 und bei mein_array[2] eine 3. Was? Eine drei? Wir haben doch nur einen Eintrag, also sollte JavaScript uns gefälligst eine 1 liefern.

Tut es aber nicht. Stattdessen wird ein Array mit drei leeren Einträgen erzeugt. Bei einem alert (mein_array[2]); bekommt ihr doch tatsächlich das zurück:,,. Was das soll? Ach, das ist eine der vielen Ungereimtheiten, die uns diese so genannte Programmiersprache bietet. Um das Problem zu vermeiden solltet ihr tunlichst mit Anführungszeichen arbeiten:


mein_array[1] = new Array ('4','7','2','9');
mein_array[2] = new Array ('3');

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt