2010-09-12 9 views
11

Grundsätzlich habe ich ein Formular mit einer <select>, die wählt, welche Gruppe von Daten verwendet werden (Werte sind "m", "f" und "c"). Ich habe dann ein Wörterbuch/Objekt mit den Daten in:Get Eigenschaft des Objekts in JavaScript

var gdas = { 
    // Male 
    "m": { 
     "calories": 2500, 
     "protein": 55, 
     "carbohydrates": 300, 
     "sugars": 120, 
     "fat": 95, 
     "saturates": 30, 
     "fibre": 24, 
     "salt": 6 
    }, 

    // Female 
    "f": { 
     "calories": 2000, 
     // etc. 
}; 

Jetzt brauche ich gdas.m/gdas.f/gdas.c zu bekommen, aber ich bin nicht sicher, was Syntax zu verwenden - ich habe versucht:

var mode = $("#mode").val(); 
var gda_set = gdas.mode; 
var gda_set = gdas[mode]; 

Was ist die richtige Syntax/Methode dafür?

+0

möglich Duplikat von [Zuweisen von Eigenschaft zu JS-Objekt unter Verwendung eines anderen Objekteigenschaftswerts als Eigenschaftsname] (http://stackoverflow.com/questions/2792936/assigning-property-to-js-object-using-another-objects -property-value-as-the-prope) –

+1

'gdas [mode]' sollte funktionieren –

Antwort

17

Da Sie die Eigenschaft über eine Variable referenzieren, benötigen Sie die Klammernotation.

var gda_set = gdas[mode]; 

... Dies ist die gleiche Schreibweise, die Sie verwenden würden, wenn Sie einen String übergeben würden.

var gda_set = gdas["f"]; 
+0

Sie haben recht, ich bin ein wenig verwirrt darüber, warum es beim ersten Mal nicht funktioniert hat , hatte wahrscheinlich meinen Haltepunkt am falschen Ort. Vielen Dank! – Ross

+0

@Ross - Gern geschehen. : o) Ein ziemlich häufiger Fehler ist es, ein '.' vor die öffnende Klammer zu setzen, wie in' gdas. [mode] '. Wie auch immer, froh, dass es funktioniert hat! – user113716

2

Sie haben kein Attribut "mode" in dieser Variablen. Sie müssen mit if's herausfinden, welches Geschlecht Sie verarbeiten und erhalten gdas.m.fibre oder gdas.f.salt.

+2

Das ist nicht wirklich seine Frage, oder? Er muss herausfinden, wie er die '.m' und' .f' Dynamiken abhängig vom gewählten Wert machen kann. –

0

Sie können gdas [mode] verwenden, es wählt das Element aus, das durch den Wert von mode indiziert wird.

Verwandte Themen