variable as index in an associative array - Javascript

bogdan picture bogdan · Nov 3, 2010 · Viewed 78.9k times · Source

I'm trying to create an associative array, create an empty array, and then add a (indexName -> value) pair:

var arrayName = new Array;

arrayName["indexName"] = value;

// i know i can also do the last line like this:

arrayName.indexName = value;

When I assign the value to the indexName I want indexName to be dynamic and the value of a variable. So I tried this:

arrayName[eval("nume")] = value;

Where:

var var1 = "index";
var var2 = "Name";

var nume = '"' + var1 + var2 + '"'; 

but: alert(arrayName["indexName"]); doesn't return "value"... it says "undefined"

Is there something I’m missing? (I’m not familiar with eval() ); if the way I’m trying is a dead end, is there another way to make the index name of the associative array value dynamic?

Answer

Christian C. Salvadó picture Christian C. Salvadó · Nov 3, 2010

At first I don't think you need a real array object to do what you need, you can use a plain object.

You can simply use the bracket notation to access a property, using the value of a variable:

var obj = {};
var nume = var1 + var2;
obj[nume] = value;

Array's are simply objects, the concept of an "associative array" can be achieved by using a simple object, objects are collections of properties that contain values.

True arrays are useful when you need to store numeric indexes, they automatically update their length property when you assign an index or you push a value to it.