Maia: arrays mit java script

Hallo an alle,

ich versuche arrays darszustellen, um diese später für die Navigation zu verwenden. Am besten poste ich erst mal den quellcode:

---------------------------------------------------------------------
var Hauptkategorien = new Array("werkzeug", "kleidung", "parfüm");
var werkzeug = new Array("schneidemaschine", "pfalzmaschine", "druckmaschine");
 for (var i = 0; i < Hauptkategorien.length; ++i)
 {
  var unterkategorie=Hauptkategorien[i];
  alert(unterkategorie);
  for (var j = 0; j < unterkategorie.length; ++j)
  {
   alert(unterkategorie[j]);
  }
 }
---------------------------------------------------------------------
wie man sieht habe ich zwei arrays:
Hauptmenu und Werkzeug, wobei werkzeug später als untermenu fungiert.

I der ersten schleife gebe ich Hauptkategorien[i] mit alert aus und die Variable wird korrekt ausgegeben. In der zweiten schleife verliere ich das array irgendwie. Kann mir vielleich jemand einen Tipp geben woran das liegen könnte?

Danke schön im voraus Maia

  1. Hallo,

    var Hauptkategorien = new Array("werkzeug", "kleidung", "parfüm");
    var werkzeug = new Array("schneidemaschine", "pfalzmaschine", "druckmaschine");
    for (var i = 0; i < Hauptkategorien.length; ++i)
    {
      var unterkategorie=Hauptkategorien[i];
      alert(unterkategorie);
      for (var j = 0; j < unterkategorie.length; ++j)
      {
       alert(unterkategorie[j]);
      }
    }

    In der Variablen unterkategorie wird eine Zeichenkette abgelegt (nacheinander "werkzeug", "kleidung" und "parfüm"). Diese wird dann als gesamtes ausgegeben:

    alert(unterkategorie);

    Die innere for-Schleife ruft dann jeden Buchstaben dieser Zeichenkette ab und gibt diese nochmals einzeln aus.

    alert(unterkategorie[j]);

    Das war bestimmt nicht das was du erreichen wolltest.
    Ich vermute du möchtest ein zweidimensionales Array erschaffen? Dann sieh dir mal den SelfHTML-Artikel zu Arrays in JavaScript an. Der Punkt Assoziative Arrays könnte für dich auch interessant sein.

    Gruß,

    --
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
    René Descartes
  2. Hellihello Maia,

    vielleicht hilft Dir aber auch die Javascript Object Notation (JSON)?

    In etwa so:

      
    Menu = {"werkzeug":["schneidemaschine",  
        "pfalzmaschine",  
        "druckmaschine"  
         ],  
        "kleidung":["KleidungUnter1",  
        "KleidungUnter2",  
        "KleidungUnter3"  
        ]  
    }  
    alert (Menu.werzeug[2]); // druckmaschine  
    // aber auch  
    for (Hauptmenu in Menu) {  
       for (Untermenu in Hauptmenu) {  
         alert(Hauptmenu[Untermenu]);  
       }  
    }  
    //ungetestet  
    
    

    Gruß,

    frankx

    1. vielen Dank frankx,
      genau so was habe ich gesucht
      LG Maia

  3. Danke Felix,
    Genau so was versuche ich, die Assoziative Arrays habe ich mir auch angesehen. Leider ist mir die schreibweise zu lang. Ich muss zwingenderweise den Code sehr kurz halten. Verstehe nicht warum ich nicht den Namen irgendwie merken und dann auf ein Array mit dem gleichen Namen zugreifen kann.

    LG Maia

    1. Hallo,

      var Hauptkategorien = new Array("werkzeug", "kleidung", "parfüm");
      var werkzeug = new Array("schneidemaschine", "pfalzmaschine", "druckmaschine");

      Verstehe nicht warum ich nicht den Namen irgendwie merken und dann auf ein Array mit dem gleichen Namen zugreifen kann.

      Felix hat es dir doch genau erklärt: Wegen

      var unterkategorie=Hauptkategorien[i];

      gilt:

      In der Variablen unterkategorie wird eine *Zeichenkette* abgelegt

      nämlich, je nach i, die Zeichenkette "schneidemaschine", "pfalzmaschine" oder "druckmaschine". Da es sich jeweils um eine Zeichenkette handelt und nicht um ein Array, kannst du nicht mit

      unterkategorie.length

      die Länge des Arrays werkzeug ermitteln sondern nur die Länge der jeweiligen Zeichekette "schneidemaschine", "pfalzmaschine" oder "druckmaschine", und mit

      alert(unterkategorie[j])

      kannst du auch nicht ein Arrayelement des Arrays werkzeug ausgeben, sondern nur den Buchstaben der jeweiligen Zeichenkette an der Position j.

      Gruß, Don P

      P.S.: Was zum Geier ist eine "pfalzmaschine"? Die große Schwester der "saarlandmaschine" vielleicht ;-) ?

      1. Grütze .. äh ... Grüße!

        P.S.: Was zum Geier ist eine "pfalzmaschine"? Die große Schwester der "saarlandmaschine" vielleicht ;-) ?

        Eine Maschine, die in der Pfalz betrieben wird, wie es der Name schon andeutet ;)


        Kai

        --
        Der vertuschte Gefahrstoff: Dihydrogenmonoxid
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
        1. Hallo,

          P.S.: Was zum Geier ist eine "pfalzmaschine"? Die große Schwester der "saarlandmaschine" vielleicht ;-) ?

          Eine Maschine, die in der Pfalz betrieben wird, wie es der Name schon andeutet ;)

          Also doch, das habe ich mir fast gedacht ;-)

          Gruß, Don P

          1. Grütze .. äh ... Grüße!

            P.S.: Was zum Geier ist eine "pfalzmaschine"? Die große Schwester der "saarlandmaschine" vielleicht ;-) ?

            Eine Maschine, die in der Pfalz betrieben wird, wie es der Name schon andeutet ;)

            Also doch, das habe ich mir fast gedacht ;-)

            Ja, und zwar ausschließlich dort. In einer anderen Region versagt sie den Dienst. ;)


            Kai

            --
            Der vertuschte Gefahrstoff: Dihydrogenmonoxid
            ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
      2. Hallo,

        Mit

        var Hauptkategorien = new Array("werkzeug", "kleidung", "parfüm");

        var werkzeug = new Array("schneidemaschine", "pfalzmaschine", "druckmaschine");
        var unterkategorie=Hauptkategorien[i];

        muss es natürlich heißen:

        In der Variablen unterkategorie wird eine *Zeichenkette* abgelegt,
        nämlich, je nach i, die Zeichenkette "werkzeug", "kleidung", oder "parfüm".

        Gruß, Don P