2010-09-12 20 views
11

Básicamente tengo un formulario con un <select> que elige qué conjunto de datos usar (los valores son "m", "f" y "c"). entonces tengo un diccionario/objeto con los datos en:Obtener la propiedad del objeto en 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. 
}; 

Ahora tengo que conseguir gdas.m/gdas.f/gdas.c pero no estoy seguro de lo que la sintaxis de usar - He intentado:

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

¿Cuál es la sintaxis/método correcto para esto?

+0

posible duplicado de [Asignación de propiedad al objeto JS utilizando otro valor de propiedad de objetos como el nombre de propiedad] (http://stackoverflow.com/questions/2792936/assigning-property-to-js-object-using-another-objects -property-value-as-the-prope) –

+1

'gdas [mode]' debería funcionar –

Respuesta

17

Como hace referencia a la propiedad mediante una variable, necesita la notación de corchetes.

var gda_set = gdas[mode]; 

... que es la misma notación que usaría si pasara una Cadena.

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

Tiene razón, estoy un poco confundido sobre por qué no funcionó la primera vez , probablemente tenía mi punto de quiebre en el lugar equivocado. ¡Gracias! – Ross

+0

@Ross - De nada. : o) Un error bastante común es colocar un '.' antes del corchete de apertura, como en 'gdas. [mode]'. De todos modos, ¡me alegra que lo hayas hecho funcionar! – user113716

2

No tiene el atributo "modo" en esa variable. Debe usar if para detectar qué sexo está procesando y obtener gdas.m.fibre o gdas.f.salt.

+2

Esa no es realmente su pregunta, ¿verdad? Necesita averiguar cómo puede hacer que la dinámica '.m' y' .f' dependa del valor seleccionado –

0

Puede usar gdas [modo], selecciona el elemento que está indexado por el valor del modo.

Cuestiones relacionadas