Hallo Berta,
ja, Computer tun immer das, was man ihnen sagt. Das ist nicht unbedingt das, was man will. Der Ausdruck [ 'foo' ]
erzeugt ein Array mit einem Eintrag, nämlich dem String "foo". Dementsprechend erzeugt [ eintrag ]
ein Array mit einem Eintrag, dessen Wert der Inhalt der Variablen eintrag
ist.
Deine var Angaben zu Eintrag_1
, Eintrag_2
und Eintrag_3
erzeugen globale Variablen. Diese findest Du als Eigenschaften des window-Objekts wieder. Mit console.log(window[eintrag]);
würdest Du die Werte also bekommen.
Aber Du solltest das nicht tun. JavaScript-Programme sollten den globalen Scope scheuen wie der Teufel das Weihwasser. Ihr Gebrauch führt bei größeren Programmen oft genug ins Chaos, weil man entweder den gleichen Variablennamen in 2 Modulen versehentlich nutzt, und sich was überschreibt, oder - schlimmer noch - absichtlich nutzt und dann nicht mehr überschaut, wer nun wann und warum an welcher Variablen herumpfuscht. Mach Dir lieber ein Container-Objekt, wo deine „Variablen“ als Eigenschaften drinstehen, das kannst Du dann im Zweifelsfall sauber als Parameter durchreichen bzw. brauchst die Funktion gar nicht mehr.
var Eintraege = ["Eintrag_1", "Eintrag_2", "Eintrag_3"];
var EintragPool = {};
EintragPool.Eintrag_1 = [{hudri: 24} /* etc. */];
EintragPool.Eintrag_2 = [{wudri: 42} /* etc. */];
EintragPool.Eintrag_3 = [{oje: 12} /* etc. */];
var testdurchlauf_Var_auslesen = Eintraege.map(function(eintrag) {
console.log(EintragPool[eintrag]);
});
Und dann, wenn dein Beispielcode keine globalen Variablen mehr erzeugt, funktioniert der trick mit window[eintrag]
sowieso nicht mwehr.
Rolf
sumpsi - posui - clusi