19

I would expect the following three associative arrays to be identical:

arr1 = { "dynamic":"foo", "bar":"baz" };

key = "dynamic";    
arr2 = { key:"foo", "bar":"baz" };

arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";

In the above examples, arr1 and arr3 are the same, but arr2 is different.

Is it possible to use dynamic keys in the declaration of a javascript associative array?

3
  • 1
    No you cannot use variables as keys in an object literal declaration. Commented Jul 24, 2013 at 17:09
  • No Commented Jul 24, 2013 at 17:30
  • duplicate of Using a variable for a Javascript object key (and many others) Commented Jul 24, 2013 at 17:38

5 Answers 5

20

It is now possible to use dynamic keys in the declaration of a javascript object, in any browser/platform that supports ES6 literal shorthands:

key = "dynamic";    
arr2 = {
    [key]: "foo",  // "dynamic": "foo"
    "bar": "baz"
};
Sign up to request clarification or add additional context in comments.

Comments

9

Only the [] syntax works for dynamic keys. You cannot use them in a literal. So your answer is no, it's not possible.

But you can use a literal to create all the static keys and then add the dynamic ones using the [] syntax. That's usually prettier than using the . or [] notation for all elements.

Comments

7

I found a solution for this.

Do as following:

var field='name';

var ourVar={};

ourVar[field] = 'Somethig';

Source: Javascript: variable as array key

Comments

1

Since you asked for a one liner, try this:

var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'});

This will make obj equal to {bar: "baz", dynamic: "foo"}

Comments

0
var originalObj = {};//some data here


function addKeyValuePair(originalObj,key,value){
    originalObj = {...originalObj,[key]:value}
};

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.