2012-09-04 25 views
6

me dieron el nombre de la variable dinámica haciendo¿Cómo asignar un valor a una variable dinámica usando eval?

varname = "data" + newid + "['" + name + "']"; 

me gustaría asignar un valor a la variable dinámica. Intenté esto

eval(varname) = value; 

pero no trabaja. ¿Qué debo hacer para asignar un valor a la variable dinámica?

+2

No utilizar variables dinámicas friggin. Usa objetos En particular, 'data [newid] [name]', y eso también funciona con la asignación. – delnan

+0

en realidad he insertado muchos jsons a través de php en mi javascript con nombres en el formato datafirst, datasecond, etc. así que en mi código javascript estoy tratando de decidir qué variable entre ellos debo manipular –

+0

Entonces no genere datos como ese. Genere un literal JSON donde también se abstrae el 'newid'. – delnan

Respuesta

6
var data1 = { a: 200 }; 
var newid = 1; 
var name = "a"; 

var varname = "data"+newid+"['"+name+"']"; 
var value = 3; 
eval(varname + "=" + value); // change data1['a'] from 200 to 3 

Dicho esto, eval es malo. ¿De verdad estás seguro de que necesitas usar variables dinámicas?

+0

Para mi propósito, me gustaría asignarle un valor a la variable dinámica que no obtiene su valor. ¿Cómo lo hago? –

+0

@juria_roberts: Ya veo, use 'eval (varname +" = "+ value)' luego. También considere usar la solución de @ Quentin en lugar de usar variables dinámicas. –

+0

funcionó perfectamente gracias –

7

No utilice eval. No use variables dinámicas.

Si tiene un grupo desordenado de datos relacionados, guárdelo en un objeto.

var myData = {}; 
myData[ newid + name ] = value; 

aunque parece que se trata de un objeto dinámico por lo

myData[ newid ] = myData[ newid ] || {}; 
myData[ newid ][ name ] = value; 
Cuestiones relacionadas