JS - Problem mit Assoziativem Array
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfrage
ansatz
array
aspekt
aufsteigende zahlenfolge
bekommen
bestandteil
code
dank
eintrag
fehler
hilfe
parameter
pfad
problem
schleife
treffer
url
zahl
zugreifen
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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 -
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 -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage