NEWS
Array auslesen (gelöst)
-
Hallo Zusammen,
ich habe eine Frage zum Auslesen von arrays.
Hier mein Testscript:
var test; for ( var a = 0 ; a < 3 ; a++ ) { test=[]; for (var b = 0 ; b < 3 ; b++ ) { test[a]=[]; test[a][b] = "Testtext"; log("a="+a+" - b="+b+" - Inhalt="+test[a][b]); log("festgelegt:"+test[0][0]); } }
Ich versuche ein zweidimensionales Array auszulesen. Der Einfachheit halber schreibe ich überall den gleichen Inhalt "Testtext" in das array.
Wenn ich es aufführe kommt folgendes im log:
2:47:59.454 info javascript.3 (14748) Stop script script.js.8-Testing.Skript_1 12:47:59.462 info javascript.3 (14748) Start javascript script.js.8-Testing.Skript_1 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=0 - Inhalt=Testtext 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:Testtext 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=1 - Inhalt=Testtext 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: a=0 - b=2 - Inhalt=Testtext 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: festgelegt:undefined 12:47:59.469 info javascript.3 (14748) script.js.8-Testing.Skript_1: a=1 - b=0 - Inhalt=Testtext 12:47:59.470 info javascript.3 (14748) script.js.8-Testing.Skript_1: registered 0 subscriptions and 1 schedule 12:47:59.470 error javascript.3 (14748) script.js.8-Testing.Skript_1: TypeError: Cannot read property '0' of undefined 12:47:59.470 error javascript.3 (14748) at script.js.8-Testing.Skript_1:8:38 12:47:59.470 error javascript.3 (14748) at script.js.8-Testing.Skript_1:13:3
Solange die Variablen a und b als Index bei der Ausgabe benutzt (Script Zeile 7) wird funktioniert auch alles wie erwartet.
Meine Erwartung ist eigentlich, dass ich bei der Ausgabe des festgelegten Zeigers [0][0] auf das Array (Script Zeile 8 ) jedes mal "Testtext" ausgegeben wird. Das funktioniert aber nur, wenn in den Schleifen a und b auch tatsächlich 0 sind. Sobald a oder b nicht mehr 0 sind ist der Inhalt des festgelegten Wertes "undefined" (Log Zeilen 6 und 8).Wo habe ich denn hier den Denkfehler?
Danke und Grüße,
Balu -
@balu1973 Vielleicht habe ich auch einen Denkfehler, aber durch den "Reset" der Variablen test in Zeile 3 und 5 durch setzen auf [] ist der Inhalt doch wirklich undefined, oder?
-
@balu1973 In Zeile 5 überschreibst du die zweite Dimension des Arrays bei jedem Durchlauf mit einem leeren Array.
Ebenso überschreibst du in Zeile 3 für jeden Durchlauf das äußere Array mit einem leeren. So wäre es richtig:var test = []; // HIER! for ( var a = 0 ; a < 3 ; a++ ) { test[a]=[]; // HIER! for (var b = 0 ; b < 3 ; b++ ) { test[a][b] = "Testtext"; log("a="+a+" - b="+b+" - Inhalt="+test[a][b]); log("festgelegt:"+test[0][0]); } }
-
Oh Mann.... Ihr hab natürlich Recht. Da war ich irgendwie vollblind.
Danke Euch beiden!!!Grüße,
Balu