• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Es wird nur die letzte Stufe vom Array angezeigt

FF2016

New member
Habe diesen Code:

HTML:
<!DOCTYPE HTML>
<html>
  <head>
  </head>
  <body> 
    <script type="text/javascript">
      var stadt = new Array();
      stadt[0] = new Array();
      stadt[0][0]="Heidelberg";
      stadt[0][0] = new Array();
      stadt[0][0][0]="Ebert-Platz";
      stadt[0][0][1]="Philosophenweg";
      stadt[0][1]="Heilbronn";
      stadt[0][2]="Mannheim";
      stadt[0][3]="Stuttgart";
      stadt[1] = new Array();
      stadt[1][0]="Augsburg";
      stadt[1][1]="Ingolstadt";
      stadt[2] = new Array();
 
      document.write (stadt[0][0] + '<br>');
      document.write (stadt[0][1] + '<br>');
      for (i = 0; i < stadt[0][0].length; i++) {
        document.write (stadt[0][0][i] + '<br>');
      }

    </script>
  </body>
</html>

Angezeigt wird:
Ebert-Platz,Philosophenweg
Heilbronn
Ebert-Platz
Philosophenweg

Ich hätte aber gerne in der 1. Zeile "Heidelberg". Es muß doch möglich sein, die Einträge auf den höheren Ebenen anzusprechen?

Was mache ich falsch?

Gruß

F.
 
HTML:
stadt[0][0]="Heidelberg";
stadt[0][0] = new Array();
Das verletzt die Struktur. Entweder ist [0][0] ein String oder ein Array aber nicht beides.

Man könnte eine Objektstruktur verwenden wie z.B.
HTML:
var stadt = {
    Heidelberg: {
        "Ebert-Platz",
        "Philosophenweg"
    }
};
Ich würde es von Ein- und Ausgabe abhängig machen, was ich in diesem Fall aber nicht kenne.
 
Code:
stadt[0][0]="Heidelberg";
stadt[0][0] = new Array();
erst weisst du stadt[0][0] den string Heidelberg zu, dann überschreibst du diesen mit einem array.
was du vermutlich möchtest ist ein array von statd-objekten, die wieder ein array von straßennamen haben
Code:
stadt = [
  {
    name: "Heidelberg",
    streets: [
      "Ebert-Platz",
      "Philosophenweg"
    ]
  },
  {
    name: "Heilbronn",
    streets: [
      "Dorfstraße"
    ]
  },
  {
    name: "Mannheim"
  }
];
darüber kannst du dann iterieren
Code:
for (c = 0; c < stadt.length; ++c)
{ 
  document.write (stadt[c].name + '<br>');
  if (stadt[c].hasOwnProperty("streets"))
  {
    for (i = 0; i < stadt[c].streets.length; ++i)
    {
      document.write (stadt[c].streets[i] + '<br>');
    }
  }
}
mit hasOwnProperty prüfst du ab, ob das objekt die entsprechende eigenschaft hat, wenn bei dir immer straßen da sein müssen, kannst du die abprüfung auch weglassen
 
Zurück
Oben