Hauptmenü

Untermenü

JavaScript - Arrays - Und all die schönen Array-Funktionen von PHP?

1. Die Abschnitte

2. Die Lösung aller Rätsel?

Nein nicht ganz. Nur eine Erklärung für das auf den ersten Blick seltsame Verhalten von JavaScript. Wie schon vorher sagte, sind in dieser Sprache Arrays eigentlich keine solchen, sondern nur Objekte. Um euch das mal vor Augen zu halten, zeige ich euch ein schöne Beispiel, die das Licht der Erkenntnis über euch leuchten lässt. Oder auch nicht, mal abwarten.

3. "Assoziative" Arrays

Anstelle der "klassischen" Schreibweise


var arr    = new Array();
arr['bla'] = 'blubb';

kann man ein Array auch so erzeugen.


var arr = new Array();
arr.bla 'blubb';

Der Zugriff

Hier ist es völlig egal, mit welcher Schreibweise man arbeitet. Das gilt auch für den Zugriff.


var arr    = new Array();
arr['bla'] = 'blubb';
arr.blubb  'blubber';
alert (arr.bla    ' ' arr.blubb);
alert (arr['bla'] + ' ' arr['blubb']);

Hä?

Genau, hä! Sowohl bei der "klassischen" Schreibweise mittels eckiger Klammern als auch bei der Pünktesversion hängt man in das Array, das schon ein Objekt ist, einfach ein weiteres ein. Das erklärt übrigens auch, warum man die Länge von "assoziativen" Arrays nicht abfragen kann, da das bei "normalen" Objekten nicht möglich ist. Die einzige Ausnahme ist wie schon gesagt, ein durchgehender numerischer Index. Und dabei ist es lattens, ob es sich um ein eigenes Array handelt oder um ein vorgegebenes Objekt, das genau so arbeitet. Als Stichwort nenne ich nur mal images, forms und das dazugehörige elements.

Obacht!

Wenn man in ein Array mit dieser Pünktesschreibweise ein weiteres einhängen möchte, so muss man natürlich auch hier erst wieder ein Array-"Objekt" erzeugen.


var arr       = new Array();
arr.bla       = new Array()
arr.bla.blubb 'blubber';

4. Numerische Arrays

Hier kann man natürlich nicht mit der Punktnotation arbeiten, da das JavaScript schlichtweg nicht vorsieht. Folgendes Beispiel haut euch also eine Fehlermeldung um die Ohren.


var arr = new Array();
arr.0   'blubb';
alert (arr[0]);

5. Fazit

Wer von Sprachen wie PHP oder Perl kommt, hat eigentlich ständig Probleme mit dem "Array"-Konzept von JavaScript. Selbst die Java-Programmierer scheinen damit so ihre Schwierigkeiten zu haben. Und das will was heißen. Ich persönlich halte von diesem Konzept sehr wenig, da es meiner Meinung nach extrem unflexibel ist und viele Fallstricke bereithält. Aber sei's drum, damit müssen wir einfach leben.

6. ... to be continued?

Möglicherweise werde ich noch auf die eine oder andere Ungereimtheit bei der Array-Verarbeitung in JavaScript stoßen. Und wenn dem so ist, werde ich euch das natürlich hier kundtun. Beten wir alle mal, dass mein (euer) Martyrium hier sein Ende findet.

zurück zum vorherigen Abschnitt