kostenloser Webspace werbefrei: lima-city


JS - Problem mit Assoziativem Array

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    EDIT: Problem mit mehrdimensionalem (assoziativem) Array
    -> das Array ist zwar assoziativ (es verwendet Zahlen im Stringvormat) dies ist jedoch nicht Bestandteil des problems. Dieser liegt überwiegend auf dem Aspekt der Mehrdimensionalität :D

    Hi,
    ich habe ein Assoziatives Array mit 3 levels:

    array[x][y][z]


    Das Array ist unregelmäßig gefüllt, das heisst x,y und z sind nicht numerisch fortlaufend sondern weisen lücken auf.

    Ich habe nun eine schleife, die über z iteriert, in der x und y jedoch konstant sind. Das heisst existiert der Pfad array[x][y] nicht interessiert das z auch nicht.

    ich weiss das Problem ist simpel und ich bin wahrscheinlich ganz nah dran, aber wie kann ich jetzt auf den wert des Arrays mit Parametern x,y und z zugreifen ohne Fehler zu bekommen?

    if(array[x][y][z])

    ... geht nicht (hier bekomme ich den fehler für array[x][y], wenn dieser Pfad nicht existiert)

    und bei meinem 2. Ansatz

    // array >  Assoziatives Array (array[x][y][z])
    		// x,y   >  Constant
    		// z     >  um 1 aufsteigende Zahlenfolge
    		
    		var a, b, c, p = false;
    		
    		if(array[x]) a = array[x]; else p = true;
    		
    		if(!p && a[y]) b = a[y]; else p = true;
    		if(!p && b[z]) c = b[z]; else p = true;
    		
    		if(!p && c){
    			//wenn unter array[x][y][z] ein Eintrag ist, dann Code ausführen
    		}


    liefert mir zwar keinen Fehler aber auch keine Treffer.

    Vielen Dank für eure Hilfe
    & Grüße

    Beitrag zuletzt geändert: 4.6.2013 9:44:29 von programtools
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. programtools schrieb:
    Hi,
    ich habe ein Assoziatives Array mit 3 levels:

    array[x][y][z]


    Das Array ist unregelmäßig gefüllt, das heisst x,y und z sind nicht numerisch fortlaufend sondern weisen lücken auf.

    Ich habe nun eine schleife, die über z iteriert, in der x und y jedoch konstant sind. Das heisst existiert der Pfad array[x][y] nicht interessiert das z auch nicht.

    ich weiss das Problem ist simpel und ich bin wahrscheinlich ganz nah dran, aber wie kann ich jetzt auf den wert des Arrays mit Parametern x,y und z zugreifen ohne Fehler zu bekommen?

    if(array[x][y][z])

    ... geht nicht (hier bekomme ich den fehler für array[x][y], wenn dieser Pfad nicht existiert)

    und bei meinem 2. Ansatz

    // array >  Assoziatives Array (array[x][y][z])
    		// x,y   >  Constant
    		// z     >  um 1 aufsteigende Zahlenfolge
    		
    		var a, b, c, p = false;
    		
    		if(array[x]) a = array[x]; else p = true;
    		
    		if(!p && a[y]) b = a[y]; else p = true;
    		if(!p && b[z]) c = b[z]; else p = true;
    		
    		if(!p && c){
    			//wenn unter array[x][y][z] ein Eintrag ist, dann Code ausführen
    		}


    liefert mir zwar keinen Fehler aber auch keine Treffer.

    Vielen Dank für eure Hilfe
    & Grüße


    hoffe das hilft dir weiter

    http://jsfiddle.net/GeWMy/5/

    Beitrag zuletzt geändert: 4.6.2013 8:16:39 von n0tiert
  4. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Danke für deine Antwort,
    ich glaube aber, dass das mein Problem nicht beschreibt.

    Ich iteriere ja über eine Zahl z mit increasement 1 und es kann sein, dass in array[x][y] eben unter z ein Eintrag besteht -> also array[x][y][z] existiert. Es kann aber auch sein, dass dieser Eintrag nicht besteht. Dann bekomme ich einen Fehler. Ebenso, wenn für das y bzw schon für das x kein Eintrag besteht, liefertmir die Abfrage einen Fehler.



    EDIT: Problem mit mehrdimensionalem (assoziativem) Array

    -> das Array ist zwar assoziativ (es verwendet Zahlen im Stringvormat) dies ist jedoch nicht Bestandteil des problems. Dieser liegt überwiegend auf dem Aspekt der Mehrdimensionalität :D

    Beitrag zuletzt geändert: 4.6.2013 9:45:10 von programtools
  5. g****e

    Fehlerprävention:
    if (array[x] && array[x][y] && array[x][y][z] )

    Wenn das array[x] nicht existiert wird hier ausgestiegen, aber es wirft keinen Fehler, da du auf nichts dahinter zugreifst, sondern nur prüfst, was hinter diesem Namen steht. Existiert er nicht ist es "undefinied" und das ist ein "false".

    Um über alles zu itterieren was existiert:
    for(a in array) {
     for (b in array[a]) {
      for (c in array[a][b]) {
       array[a][b][c]++;
      }
     }
    }


    Liebe Grüße
  6. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    ggamee schrieb:
    Fehlerprävention:
    if (array[x] && array[x][y] && array[x][y][z] )

    Liebe Grüße


    Genau das wars was ich gesucht hatte :) Super, vielen dank :D
    Ich wusste ja dass es ganz einfach gehen muss, habs aber viel zu umständlich angegangen.

    Nochmal Danke für die Hilfe & Liebe Grüße
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!