Hauptmenü

Untermenü

JavaScript - Arrays - Die Sache mit den Indizes

1. Die Abschnitte

2. Grundsätzliches

In JavaScript gibt es nur eine Variante, wo man keine Indizes angeben muss, nämlich bei der Kurzschreibweise, die wir auch schon von PHP her kennen. In diesem Fall schafft es sogar JavaScript, automatisch hoch zu zählende Indizes zu vergeben.


mein_array = new Array ('bla','blubb');
// oder
mein_array = ['bla','blubb'];

Ansonsten muss immer ein entsprechender Index angegeben werden! So etwas wie in PHP ist in JavaScript nicht möglich.


$array[] = 'bla';
$array[] = 'blubb';

3. Numerische Indizes

Hier muss man auf eine Sache besonders aufpassen. Die Zahlen müssen bei 0 beginnen und fortlaufend durchnummeriert werden, sonst kann man eine böse Überraschung bei folgendem Beispiel erleben.


mein_array     = new Array ();
mein_array[0] = 'bla';
mein_array[2] = 'blubb';
mein_array[5] = 'blubber';
alert (mein_array.length);

PHP würde bei einem count hier korrekt eine 3 ausgeben. Was aber macht JavaScript? Da bekommt ihr doch tatsächlich eine 6 um die Ohren gehauen! Warum? Keine Ahnung. Entweder greift JavaScript nur auf den letzten Wert zu und nimmt den als Maßstab für die Anzahl oder das Array wird einfach aufgefüllt, auch wenn die jeweiligen Zusätze dann vom Typ undefined wären. Was das soll? Ach, fragt mich nicht. Ich habe andere Sorgen.

4. Assoziative Arrays/Hashes

... gibt es in JavaScript nicht. Man kann zwar mit Konstrukten wie mein_array['bla'] arbeiten, muss aber auf einige Besonderheiten achten. So ist es leider nicht mehr möglich, die Anzahl der Einträge herauszufinden. Folgendes Beispiel ergibt doch tatsächlich 0.


mein_array            = new Array ();
mein_array['bla']     = 'kräh';
mein_array['blubb']   = 'schwall';
mein_array['blubber'] = 'laber';
alert (mein_array.length);

Keine Angst, das war noch lange nicht alles. Ein paar weitere Überraschungen werdet ihr später noch erleben.

5. print_r

Gibt es in JavaScript nicht. Wie könnte es auch anders sein. Allerdings besteht bei fortlaufend durchnummeriertem Index die Möglichkeit, alles per alert auszugeben, aber nur da, ansonsten bekommt ihr unsaubere Angaben.


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

// funktioniert NICHT(!) sauber
mein_array    = new Array ();
mein_array[0] = 'laber';
mein_array[3] = 'schwall';
mein_array[7] = 'jodelblah';
alert (mein_array);

Ein Tipp

Wer mit Firebug arbeiten sollte mit dem schon erwähnten console.log arbeiten. Und bitte immer richtig schreiben. Nicht so wie ich, der immer Sachen wie consolo, consol oder consle produziert. ;-)

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