Is there a way to use variable keys in a JavaScript object literal?

Is there a way to use variable keys in a JavaScript object literal?

I have code like this.
var key = “anything”;
var object = {
key: “key attribute”
};

I want to know if there is a way to replace that key with “anything”.
like
var object = {
“anything”: “key attribute”
};

Solutions/Answers:

Solution 1:

Yes. You can use:

var key = "anything";
var json = { };
json[key] = "key attribute";

Or simply use your second method if you have the values at hand when writing the program.

Solution 2:

In ES6, use computed property names.

const key = "anything";   

const object = {   
    [key]: "key attribute"
//  ^^^^^  COMPUTED PROPERTY NAME
};

Note the square brackets around key. You can actually specify any expression in the square brackets, not just a variable.

Solution 3:

This should do the trick:

var key = "anything";

var json = {};

json[key] = "key attribute";

Solution 4:

On modern Javascript (ECMAScript 6) you can sorround the variable with square brackets:

var key = "anything";

var json = {
    [key]: "key attribute"
};

Solution 5:

Solution:

var key = "anything";

var json = {};

json[key] = "key attribute";

Solution 6:

Closures work great for this.

Related:  Run JavaScript unit tests inside of Visual Studio

function keyValue(key){
  return function(value){
    var object = {};
    object[key] = value;
    return object;
  }
}

var key = keyValue(key);
key(value);