juria_roberts
juria_roberts

Reputation: 155

How to assign a value to a dynamic variable using eval?

I got the dynamic variable name doing

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

I would like to assign a value to the dynamic variable. I tried this

eval(varname) = value; 

but it doesn't work. What do I need to do in order to assign a value to the dynamic variable?

Upvotes: 7

Views: 23728

Answers (2)

João Silva
João Silva

Reputation: 91349

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

Having said that, eval is evil. Are you really sure you need to use dynamic variables?

Upvotes: 8

Quentin
Quentin

Reputation: 943996

Don't use eval. Don't use dynamic variables.

If you have an unordered group of related data, store it in an object.

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

although it looks like you are dealing with a dynamic object so

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

Upvotes: 8

Related Questions