kostenloser Webspace werbefrei: lima-city


JS: Array-Element unter Verwendung von Variablen aufrufen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Die Zeile
    meinArray[a][b] = 'irgendwas';
    funktioniert leider nicht. meinArray ist ein Array, das im globalen Raum erstellt wurde.
    meinArray[a]
    ist ein Array, das in einer Funktion erstellt wurde. a und b stammen beide aus der gleichen Funktion. Die Fehlerkonsole sagt, dass es
    meinArray[a][b]
    nicht gäbe, aber das soll (wenn a=5 und b=7 ist) ja
    meinArray[5][7]
    heißen. Wie mache ich, dass das so umgewandelt wird?

    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,
    [500][600]
    zuerst zu bestimmen, und alles davor und danach irgendwann anders. Geht das?


    Edit: Musste das alles als Code schreiben, weil Lima das
    [b]
    aus
    meinArray[a][b]
    natürlich so verstanden hat, als wollte ich ab da fett schreiben.

    Beitrag zuletzt geändert: 23.6.2011 12:55:20 von das-koenigreich
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. 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 ?


  4. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Die Fehlermeldung ist, dass
    meinArray[a]
    nicht gefunden wurde. Es kommt darauf an, was ich mache, ich glaube, es hieß auch schon, dass
    meinArray[a][b]
    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.
  5. t*****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.
  6. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    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,
    [500][600]
    zuerst zu bestimmen, und alles davor und danach irgendwann anders. Geht das?

    2. Wieso geht
    myArray[a][b]
    und
    var tmpA = a+c;
    var tmpB = b+d;
    myArray[tmpA][tmpB]
    zwar, aber
    myArray[a+c][b+d]
    nicht?

    Eigentlich ist nur das 1. von großer Bedeutung.
  7. t*****b

    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,
    [500][600]
    zuerst zu bestimmen, und alles davor und danach irgendwann anders. Geht das?



    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:
    2. Wieso geht [code]myArray[a][b]
    und
    var tmpA = a+c;
    var tmpB = b+d;
    myArray[tmpA][tmpB]
    zwar, aber
    myArray[a+c][b+d]
    nicht?


    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.
  8. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    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.
  9. 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!