1UnitedPower: Denkblockade beim Einbinden weiterer Untermenüs

Beitrag lesen

Meine Herren,

~~~javascript

Untermenue["Ruestzeug"]   = ["Aus Stoff", "Aus Leder", "Aus Metall"];
Untermenue["Ruestzeug"]["AusStoff"] = ["Für den Kopf", "Für den Oberkörper", "Für die Arme", "Für die Beine", "Sonstiges"];
Untermenue["Ruestzeug"]["AusLeder"] = ["Für den Kopf", "Für den Oberkörper", "Für die Arme", "Für die Beine", "Sonstiges"];
Untermenue["Ruestzeug"]["AusMetall"] = ["Für den Kopf", "Für den Oberkörper", "Für die Arme", "Für die Beine", "Sonstiges"];

  
Das ist eine sehr eigenartige Struktur, hier mal ein Equivalent mit etwas ausführlicherer Schreibweise:  
  
  
~~~javascript
  
Untermenue["Ruestzeug"] = new Array();  
  
var Ruestzeug = Untermenue["Ruestzeug"]; // nur der Übersicht halber  
  
Ruestzeug[0] = "Aus Stoff"  
Ruestzeug[1] = "Aus Leder";  
Ruestzeug[2] = "Aus Metall";  
Ruestzeug["AusStoff"] = new Array();  
Ruestzeug["AusStoff"][0] = "Für den Kopf";  
Ruestzeug["AusStoff"][1] = "Für den Oberkörper";  
Ruestzeug["AusStoff"][2] = "Für die Arme";  
Ruestzeug["AusStoff"][3] = "Für die Beine";  
Ruestzeug["AusStoff"][4] = "Sonstiges";  
Ruestzeug["AusLeder"] = new Array();  
Ruestzeug["AusLeder"][0] = "Für den Kopf";  
Ruestzeug["AusLeder"][1] = "Für den Oberkörper";  
Ruestzeug["AusLeder"][2] = "Für die Arme";  
Ruestzeug["AusLeder"][3] = "Für die Beine";  
Ruestzeug["AusLeder"][4] = "Sonstiges";  
Ruestzeug["AusMetall"] = new Array();  
Ruestzeug["AusMetall"][0] = "Für den Kopf";  
Ruestzeug["AusMetall"][1] = "Für den Oberkörper";  
Ruestzeug["AusMetall"][2] = "Für die Arme";  
Ruestzeug["AusMetall"][3] = "Für die Beine";  
Ruestzeug["AusMetall"][4] = "Sonstiges";  

Du mischst auf dieser Ebene numerische und alphanumerische Schlüssel, was untypisch ist. Eigenschaften mit numerischen Schlüsseln zählen als Array-Elemente, nicht-numerische hingegen als Objekt-Eigenschaften. Das hat dich vermutlich auch dazu verleitet eine for-in-Schleife zum Itererieren über die Struktur zu verwenden.

So Fehler könnten dir direkt auffallen, wenn du derartige Datenstrukturen in JSON-Syntax notierst, gleichzeit erhöhst du damit außerdem wesentlich die Leserlichkeit.

Ein JSON-Beispiel (ohne diesen Fehler):

{  
   "AusStoff" : [  
      "Für den Kopf",  
      "Für den Oberkörper",  
      "Für die Arme",  
      "Für die Beine",  
      "Sonstiges"  
   ],  
   "AusLeder" : [  
      "Für den Kopf",  
      "Für den Oberkörper",  
      "Für die Arme",  
      "Für die Beine",  
      "Sonstiges"  
   ],  
   "AusMetall" : [  
      "Für den Kopf",  
      "Für den Oberkörper",  
      "Für die Arme",  
      "Für die Beine",  
      "Sonstiges"  
   ]  
}