auf Array zugreifen?

DataFox

Erfahrenes Mitglied
Hi Leute, frohe Weihnachten :D

leider habe ich ausgerechnet jetzt ein Problem mit einem Array:

Code:
var meinGanzGrossesArray = {a: 'foo', b: 'bar', c: 'hallo'}; //mehr als 50 elemente!
function getMeinElement(key) {
  return meinGanzGrossesArray.key;
}
funktioniert nicht...

und

Code:
var meinGanzGrossesArray = {a: 'foo', b: 'bar', c: 'hallo'}; //mehr als 50 elemente!
function getMeinElement(key) {
  return meinGanzGrossesArray[key];
}

t auch nicht :(

also ich will z.b. aufrufen:

Code:
alert(meinGanzGrossesArray('a'));

und es soll 'foo' raus kommen...

da das Array so gross ist will ich es nicht in einer for-schleife durchlaufen, denn es wird sehr oft benutzt (bzw. es soll, wenns läuft ;) )

hat jemand eine Idee wie man das am schlausten bewerkstelligen könnte, am besten ohne das man das Array umschreiben muss?

danke euch allen für die hilfe!!

Gruß
Laura
 
Hallo Laura,

meinGanzGrossesArray ist überhaupt kein Array, sondern ein normales Objekt. Dein zweiter Codeschnipsel funktioniert bei mir einwandfrei:
Code:
>>> var meinGanzGrossesArray = {a: 'foo', b: 'bar', c: 'hallo'};
>>> function getMeinElement(key) { return meinGanzGrossesArray[key]; }
>>> getMeinElement('a');
"foo"

Hast du dich bei alert(meinGanzGrossesArray('a')); nur beim Schreiben des Beitrags vertippt? Das sollte ja vermutlich alert(getMeinElement('a')); heißen.

Grüße,
Matthias
 
Wie Matthias Reitinger schon sagte es handelt sich hier nicht mehr um ein Array sondern ein Object obwohl man es als assoziatives Array missbrauchen kann auch wenn es keines ist.

Zum ersten Codeschnipsel nur

Code:
var myValues = {a:'foo',b:'bar'}
function getValueFromObject (key) {
  // da es sich bei Key um nen String handelt geht die Punkt notation nicht so 
  // so ohne weiteres mit eval() kann man den String aber als JS Code ausführen
  return eval('myValues.'+key); // sieht halt unschön aus
}
alert(getValueFromObject('a'));
// oder
alert(myValues.a);
// bzw 
alert(myValues['a']);

Probleme wirst aber damit bekommen das Du nie weißt wie lang es wirklich ist , es sei denn Du erweiterst das Object Object um eine Funktion die die Länge vom Object bestimmt.
 
Hi

danke für Eure Hilfe! Konnte das Problem nun lösen :) habe einfach das Object als assoziatives Array missbraucht, weil mir nichts besseres eingefallen ist. Bin von PHP einen leichteren Umang mit Arrays gewöhnt :/ aber nu gehts!
besten Dank nochmal!!

Gruß
Laura
 

Neue Beiträge

Zurück