JavaScript按变量设置对象键

Hun*_*len 828 javascript

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

var key = "happyCount";
myArray.push( { key : someValueArray } );
Run Code Online (Sandbox Code Playgroud)

但是当我尝试检查每个对象的对象数组时,键"key"而不是变量键的值.有没有办法从变量设置键的值?

小提琴更好的解释:http: //jsfiddle.net/Fr6eY/3/

Roc*_*mat 1478

您需要先创建对象,然后使用[]它来设置它.

var key = "happyCount";
var obj = {};
obj[key] = someValueArray;
myArray.push(obj);
Run Code Online (Sandbox Code Playgroud)

2018年更新:

如果您能够使用ES6和Babel,则可以使用以下新功能:

{
    [yourKeyVariable]: someValueArray,
}  
Run Code Online (Sandbox Code Playgroud)

  • 注意,事情发生了变化[在ES6中更好](http://stackoverflow.com/a/2274327/444255),即`{[key]:someValueArray}` (234认同)
  • @Jake你今天可以在ES6或ES7中编程,并让Babel将你的JS文件编译回ES5.这就是现在构建webapps的方式. (12认同)
  • @Frank Nocke我很期待能够在大约10年的时间里使用它,当时我们必须支持所有'浏览器'支持它... (5认同)
  • 您在哪里定义`myArray`? (2认同)
  • @AlexG:在问题中使用了它. (2认同)
  • 对于那些想知道如何调用此ES6功能的人:它是“计算属性名称” (2认同)

kir*_*nvj 270

试试这样的事情(在答案结尾处查看ES6示例)

var yourObject = {};

yourObject[yourKey] = "yourValue";

console.log(yourObject );
Run Code Online (Sandbox Code Playgroud)

例:

var person = {};
var key = "name";

person[key] /* this is same as person.name */ = "John";

console.log(person); // should print  Object { name="John"}
Run Code Online (Sandbox Code Playgroud)

    var person = {};
    var key = "name";
    
    person[key] /* this is same as person.name */ = "John";
    
    console.log(person); // should print  Object { name="John"}
Run Code Online (Sandbox Code Playgroud)

在ES6中,你可以这样做.

var key = "name";
var person = {[key]:"John"};
console.log(person); // should print  Object { name="John"}
Run Code Online (Sandbox Code Playgroud)

    var key = "name";
    var person = {[key]:"John"};
    console.log(person); // should print  Object { name="John"}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!ES6示例正是我想要与classNames lib结合起来做出反应.:) (13认同)
  • ES6样本非常完美.非常感谢分享! (8认同)

und*_*low 25

现实

JS 中的问题很简单:

{ x: 2 }
Run Code Online (Sandbox Code Playgroud)

是相同的:

{ "x": 2 }
Run Code Online (Sandbox Code Playgroud)

(即使您x定义了变量!)

解决方案

在键的标识符[]周围添加方括号:

(现在该关键字var已经很少使用,所以请使用const或来代替let

太棒了;

在此输入图像描述


Rah*_*war 16

在ES6中我们可以这样写对象

const key= "Name";
const values = "RJK"

const obj = {
    [key]: values,
}
Run Code Online (Sandbox Code Playgroud)

  • 这与现有的答案没有什么不同。 (2认同)

小智 14

var key = "happyCount";
myArray.push( { [key] : someValueArray } );
Run Code Online (Sandbox Code Playgroud)


小智 11

用这个。

var key = 'a'
var val = 'b'

console.log({[key]:val})

//a:'b'
Run Code Online (Sandbox Code Playgroud)

  • @kiranvj 已经给出了这个答案 (3认同)