foreach oder ähnliches (array)
Andreas
- javascript
Hallo,
ich habe eine dummes Problem, bei dem ich überhaupt nicht weiterkomme. google.de hilft mir leider auch nicht weiter (totaler javascript-anfänger). vielleicht hat jemand eine idee:
Ich hab ein mehrdimensionales array in folgender form:
daten["pflanzen"]["baeume"]["00023"] = "Eiche";
daten["pflanzen"]["baeume"]["00045"] = "Tanne";
daten["pflanzen"]["straeucher"]["00067"] = "Hagebutte";
daten["pflanzen"]["straeucher"]["00089"] = "Holunder";
Der letzte Schlüssel muss leider ein String sein, da die Daten so aus der DB kommen (geht über PHP). Das Array selbst ist in Ordnung.
Jetzt soll es drei select-Boxen geben, die sich via Javascript aktualisieren. Wähle ich also in der ersten Select-Box "Pflanzen" aus, sollen in der zweiten Select-Box "Baeume", "Straeucher" usw. angezeigt werden.
Von PHP bin ich foreach gewohnt. Gibt es einen ähnlichen Befehl bei javascript? Ich finde nur die normale for-Schleife, aber dazu bräuchte ich ja Schlüssel in Form von Zahlen (integer), oder?
Ich würde praktisch dann je nach Auswahl in Select-Box1 durch das Array daten["pflanzen"] rennen und wenn ich dort "Baeume" auswähle, dann durch das Array daten["pflanzen"]["baeume"]. Ist dies so in javascript überhaupt möglich?
Wie ich die Daten in die select-box komme, habe ich mir schon zusammengesucht. Das klappt auch. Ich kann eben nur nicht durch das array "gehen" :-/
Gruss,
Andreas
Von PHP bin ich foreach gewohnt. Gibt es einen ähnlichen Befehl bei javascript? Ich finde nur die normale for-Schleife, aber dazu
es gibt for in, womit man z.B. wunderbar über Eigenschaften in Objekten loopen kann. Geht auch mit Elementen
Von PHP bin ich foreach gewohnt. Gibt es einen ähnlichen Befehl bei javascript? Ich finde nur die normale for-Schleife, aber dazu
es gibt for in, womit man z.B. wunderbar über Eigenschaften in Objekten loopen kann. Geht auch mit Elementen
Prima. Das bringt mich schon fast zum Ziel. Danke.
Trotzdem klappt es noch nicht ganz: Wenn ich mit "for in" normal durch das Array gehe, bekomme ich die Schlüssel der ersten Ebene. Wie kann ich aber nun zum Beispiel durch daten["pflanzen"]["baeume"] gehen? Das kann ich irgendwie direkt in der "for in"-Schleife nicht angeben. Da kommt dann nur Quatsch bei raus :)
Gruss,
Andreas
Trotzdem klappt es noch nicht ganz: Wenn ich mit "for in" normal durch das Array gehe, bekomme ich die Schlüssel der ersten Ebene. Wie kann ich aber nun zum Beispiel durch daten["pflanzen"]["baeume"] gehen?
auch for in kannst du verschachteln, und die Assoziationen sollten auch noch vorhanden sein. Alternativ kannst Du ja statt mit Arrays mit arrayähnlichen Objekten arbeiten, an die Du Hilfseigenschaften oder -methoden dranflanschst.
Ich hab ein mehrdimensionales array in folgender form:
Das ist kein Array!
Es gibt in JS keine assoziativen Arrays http://forum.de.selfhtml.org/archiv/2004/7/85970/#m507403
Der Indexoperator den du verwendest ist nur zufällig der gleiche wie der für arrayindizes.
daten["pflanzen"]["baeume"]["00023"] = "Eiche";
Das entspricht:
daten.pflanzen.baeume["00023"] = "Eiche";
Wie gesagt, wenn du den Indexoperator verwendest glaubst du es wäre ein Array, ist es aber nicht, letztlich ist es einfach der Mißbrauch eines Objektes als assoziatives Array (das ist nichts schlechtest, aber man sollte es Wissen), den du hast keinerlei Möglichkeiten wie in anderen Programmiersprachen diesen irgendwie speziell zu verarbeiten.
Die dritte eigneschaft ist eine Zahl, deshalb must du hier den Indexoperator verwenden, da eine Eigenschaft eines Obkjektes nicht mit einer Zahl beginnen darf.
Der letzte Schlüssel muss leider ein String sein, da die Daten so aus der DB kommen (geht über PHP). Das Array selbst ist in Ordnung.
Es ist ein Object.
Von PHP bin ich foreach gewohnt. Gibt es einen ähnlichen Befehl bei javascript? Ich finde nur die normale for-Schleife, aber dazu bräuchte ich ja Schlüssel in Form von Zahlen (integer), oder?
In JS heißt die schleife: for(attr in object)
Struppi.