Auf Element eines Array, mit zusammengesetztem Namen, zugreifen

boJah

Grünschnabel
Hallo zusammen,
ich habe folgendes Problem:

Code:
name = feld1_array[zufallszahl];

Eigentlich alles ok, wobei ich jetzt "feld1" so ersetzen möchte, dass auch hier eine Variable steht. Also, es gibt mehrere Arrays "feld1_array", "feld2_array",...
Das Zusammensetzen funktioniert, wenn ich z.B.:

Code:
name = eval(welchesfeld)+"_array"

per trace ausgeben lasse wird der Array Inhalt angezeigt. Aber das Zugreifen auf ein spezielles Element will mir nicht gelingen.
Also so etwas wie:

Code:
name = [eval(welchesfeld)+"_array"][zufallszahl]


Kann mir da wer weiterhelfen?
 
Hi,

Code:
ergebnis = this["feld" + zahl + "_array"][zufallszahl];
, wobei sich "this" auf die Zeitleiste beziehen muss, auf der auch die Arrays deklariert sind.

Du solltest aber vermeiden, "name" als Variablenbezeichner zu verwenden; es handelt sich um ein reserviertes Wort in AS.

Gruß
.
 
Herzlichen Dank, es funktioniert!
Ich habe die Namen hier vereinfacht, damit man einfacher versteht worum es mir ging. Benutze "name" nicht wirklich.

Sieht in Wirklichkeit dann so aus:
Code:
zufeld = this[eval(figur) + "_array"][zufeldlos];
this[eval(figur)+"_array"].splice(zufeldlos, 1);
Habe das direkt auch mal für das "splicen" adaptiert; funktioniert genauso gut.

Magst du vielleicht dennoch mal erklären, warum das
Code:
this[]
hier nötig ist? Verstehen ist ja bekanntlich besser als abschreiben, gell? ;)
 
Hi,

"this" bezieht sich auf das aktuelle Objekt (hier die Zeitleiste, auf der die Arrays deklariert sind). Nötig ist diese Objektreferenz, wenn Du Objekte (über zusammengesetzte Objektnamen) mit dem Array-Zugriffsoperator [] ansprechen willst:
Code:
var foo = "bar;

trace(foo); // --> "bar";

// entspricht:

trace(this["foo"]); // --> "bar"

eval ist eigentlich veraltet; es kann a) nur Objektreferenzen zurückgeben und b) nicht auf der linken Seite eines Ausdrucks stehen:
Code:
eval("foo") = "bar"; // funktioniert nicht

this["foo"] = "bar"; // funktioniert

Gruß
.
 
Zurück