JS: Array-Element unter Verwendung von Variablen aufrufen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anfangen
array
ausgeben
bestimmen
buchstabe
code
element
fangen
fehlermeldung
feststelle
index
interpreter
mache
problem
sache
speicherplatz
test
url
verwenden
zweite dimension
-
Die Zeile
funktioniert leider nicht. meinArray ist ein Array, das im globalen Raum erstellt wurde.meinArray[a][b] = 'irgendwas';
ist ein Array, das in einer Funktion erstellt wurde. a und b stammen beide aus der gleichen Funktion. Die Fehlerkonsole sagt, dass esmeinArray[a]
nicht gäbe, aber das soll (wenn a=5 und b=7 ist) jameinArray[a][b]
heißen. Wie mache ich, dass das so umgewandelt wird?meinArray[5][7]
Viel interessanter wäre für mich aber etwas, das unbegrenzt viele Elemente hat und das (wenn möglich) bei 1 anfangen kann, ohne, dass es ein nulltes Element gibt. Es sollte aber auch möglich sein,
zuerst zu bestimmen, und alles davor und danach irgendwann anders. Geht das?[500][600]
Edit: Musste das alles als Code schreiben, weil Lima das
aus[b]
natürlich so verstanden hat, als wollte ich ab da fett schreiben.meinArray[a][b]
Beitrag zuletzt geändert: 23.6.2011 12:55:20 von das-koenigreich -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo
zweidimensionales Array in Javascript ist doch gar kein Problem
und wie du die KEYs nennst, ist auch relativ egal
also wo ist das Problem eigentlich ? ... BeispielCode + Fehlermeldung ?
-
Die Fehlermeldung ist, dass
nicht gefunden wurde. Es kommt darauf an, was ich mache, ich glaube, es hieß auch schon, dassmeinArray[a]
nicht existiere, aber es läuft immer darauf hinaus, dass die Variable nicht eingesetzt wurde und JS deswegen den Buchstaben und keine Zahl als Index wahrnahm.meinArray[a][b]
-
Poste doch mal den kompletten Quellcode, damit man dir genau sagen kann was du falsch machst. So können wir nur Rätsel raten da JS natürlich auch Variablen als Index erkennt, aber wo dein Fehler liegt können wir nur mit Quellcode feststellen.
-
Falscher Alarm. Ich habe nur die beiden Variablen an einer Stelle verwechselt, d.h. es wurde auf die zweite Dimension zugegriffen und versucht, die erste darin zu erstellen. Das muss natürlich anders herum sein.
Mich interessieren aber noch zwei Sachen (die erste viel mehr):
1. Gibt es so was, das ich oben beschrieben habe?das-koenigreich schrieb:
Viel interessanter wäre für mich aber etwas, das unbegrenzt viele Elemente hat und das (wenn möglich) bei 1 anfangen kann, ohne, dass es ein nulltes Element gibt. Es sollte aber auch möglich sein,
zuerst zu bestimmen, und alles davor und danach irgendwann anders. Geht das?[500][600]
2. Wieso geht
undmyArray[a][b]
zwar, abervar tmpA = a+c; var tmpB = b+d; myArray[tmpA][tmpB]
nicht?myArray[a+c][b+d]
Eigentlich ist nur das 1. von großer Bedeutung. -
das-koenigreich schrieb:
1. Gibt es so was, das ich oben beschrieben habe?das-koenigreich schrieb:
Viel interessanter wäre für mich aber etwas, das unbegrenzt viele Elemente hat und das (wenn möglich) bei 1 anfangen kann, ohne, dass es ein nulltes Element gibt. Es sollte aber auch möglich sein,
zuerst zu bestimmen, und alles davor und danach irgendwann anders. Geht das?[500][600]
Arrays fangen grundsätzlich immer bei 0 an. Das ist einfach durch die Informatik so bestimmt, da der kleinste Integerwert 0 ist und nicht 1. Du kanst aber 0 überspringen und direkt meinArray[1] = "wert" verwenden
Natürlich ist es egal, welchen Index du als erstes Indizierst:
meinArray[456] = "foo";
meinArray[123] = "bar";
funktioniert logischerweise.
das-koenigreich schrieb:
und2. Wieso geht [code]myArray[a][b]
zwar, abervar tmpA = a+c; var tmpB = b+d; myArray[tmpA][tmpB]
nicht?myArray[a+c][b+d]
Das liegt daran, dass der Interpreter den Index des Arrays nicht mehr parsed, also das was zwischen [ und ] steht.
meinArray[3] = "test"; a = 1; b = 2; temp = a+b; alert(meinArray[3]);
würde ergeben:
meinArray[3] = "test"; a = 1; b = 2; temp = 3; alert(meinArray[3]); // gibt "test" aus
Dagegen würde:
meinArray[3] = "test"; a = 1; b = 2; alert(meinArray[a+b]); würde "undefined" ausgeben oder garnicht erst funktioniern da es kein "meinArray[a+b]" gibt.
nicht funktionieren.
Ein Array erwartet entweder einen Index (bei numerischen Arrays) oder einen String (bei assoziativen Arrays), aber keinesfalls Code. -
Dass Arrays immer mit 0 anfangen, weiß ich. Ich suche ja auch etwas, das einem Array nahe kommt, aber nicht genau eines ist. Übrigens gibt es in JS keine assoziativen Arrays.
Es könnte aber vorkommen, dass ich bei a=5000 und b=10000 anfangen muss und nur bis a=5050 und b=10050 muss. Würde ich ein Array verwenden, dann würde ich den Speicherplatz von 5.000 Unterarrays (zweite Dimension) mit insgesamt 50.000.000 Elementen (also 50.000.000 leere Strings, nehme ich an, da ich, wie wahrscheinlich schon jeder bemerkt hat, JS nicht gut kann). So viel will ich eigentlich nicht verschwenden, denn wenn jedes leere Array-Element auch nur ganz wenig Speicherplatz verbraucht, kommen am Ende viele viele MB zusammen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage