JavaScript通过变量设置对象键

JavaScript通过变量设置对象键,javascript,Javascript,我正在用JavaScript构建一些对象,并将这些对象推送到一个数组中,我将要使用的键存储在一个变量中,然后创建我的对象,如下所示: var key = "happyCount"; myArray.push( { key : someValueArray } ); 但是,当我尝试检查每个对象的对象数组时,键是“key”,而不是变量键的值。有没有办法通过变量设置键的值 为了更好的解释,请拨弄: 您需要先创建对象,然后使用[]进行设置 var key = "happyCount"

我正在用JavaScript构建一些对象,并将这些对象推送到一个数组中,我将要使用的键存储在一个变量中,然后创建我的对象,如下所示:

var key = "happyCount";
myArray.push( { key : someValueArray } );
但是,当我尝试检查每个对象的对象数组时,键是
“key”
,而不是变量键的值。有没有办法通过变量设置键的值

为了更好的解释,请拨弄:

您需要先创建对象,然后使用
[]
进行设置

var key = "happyCount";
var obj = {};
obj[key] = someValueArray;
myArray.push(obj);

2018年更新:

如果您能够使用ES6Babel,则可以使用此新功能:

{
    [yourKeyVariable]: someValueArray,
}  

在ES6中,您可以这样做。

var key = "name";
var person = {[key]:"John"}; // same as var person = {"name" : "John"}
console.log(person); // should print  Object { name="John"}
var key=“name”;
var person={[key]:“John”};

控制台日志(个人);//应该打印对象{name=“John”}
@AlexG:问题中使用了它。请注意,情况发生了变化,例如,
{[key]:someValueArray}
@Frank Nocke我期待着在大约10年后能够使用它,那时我们必须支持的所有“浏览器”都支持它…@Jake您可以在今天的ES6或ES7中编程,让巴贝尔把你的JS文件编译回ES5。这就是如今构建Web应用程序的方式。对于那些想知道ES6功能是如何命名的人:它是
计算属性名
,我提供了一个解决方案,我认为这个链接中的人们可能会感兴趣,使用下划线:ES6中的解决方案是将变量放在方括号中,以便对其进行计算<代码>var key=“happyCount”;push({[key]:someValueArray})@Jake目前唯一不支持此es6功能的浏览器是IE11:@Jake这是一个很好的观点。一个可能的解决方案是使用巴贝尔将ES6传输到ES5。@Jake这正是巴贝尔的用途。正如Dan Cron在上面提到的那样。@Jake Like Hunter说,最好不要为ES5用户编写代码。如果需要支持较旧的浏览器,请选择pollyfill&Transfile。现在是2018年,而不是2009年,我们真的需要继续前进。