我在JavaScript中构建一些对象,并将这些对象推入一个数组,我将要使用的键存储在一个变量中,然后像这样创建我的对象:
var key = "happyCount";
myArray.push( { key : someValueArray } );
但当我尝试检查每个对象的对象数组时,键是“key”而不是变量键的值。有没有办法从变量中设置键的值?
为了更好地解释,请拨弄:http://jsfiddle.net/Fr6eY/3/
我在JavaScript中构建一些对象,并将这些对象推入一个数组,我将要使用的键存储在一个变量中,然后像这样创建我的对象:
var key = "happyCount";
myArray.push( { key : someValueArray } );
但当我尝试检查每个对象的对象数组时,键是“key”而不是变量键的值。有没有办法从变量中设置键的值?
为了更好地解释,请拨弄:http://jsfiddle.net/Fr6eY/3/
当前回答
在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”};console.log(人);//应打印对象{name=“John”}
其名为Computed Property Names,使用括号表示法(方括号)[]实现
示例:{[variableName]:someValue}
从ECMAScript 2015开始,对象初始化器语法也支持计算属性名称。这允许您放置一个表达式括号[]中,将计算并用作属性名称。
对于ES5,请尝试以下操作
var yourObject = {};
yourObject[yourKey] = "yourValue";
console.log(yourObject );
例子:
var person = {};
var key = "name";
person[key] /* this is same as person.name */ = "John";
console.log(person); // should print Object { name="John"}
var person={};var key=“name”;person[key]/*这与person.name*/=“John”相同;console.log(人);//应打印对象{name=“John”}
其他回答
您需要先创建对象,然后使用[]设置它。
var key = "happyCount";
var obj = {};
obj[key] = someValueArray;
myArray.push(obj);
2021更新:
ECMAScript 2015(ES6)中引入了计算属性名称功能,允许您以JavaScript对象文字符号动态计算对象财产的名称。
const yourKeyVariable = "happyCount";
const someValueArray= [...];
const obj = {
[yourKeyVariable]: someValueArray,
}
let key = "name";
let name= "john";
const obj ={
id:01
}
obj[key] = name;
console.log(obj); // output will {id:01,name:"john}
使用所示的方括号,它将设置为键
在TypeScript中,它应该看起来像这样
let title ="Current User";
type User = {
[key:string | number | symbol]: any
};
let myVar: User = {};
myVar[ title ] = "App Developer";
console.log(myVar)// Prints: { Current User:"App Developer"}
现实
JS的问题很简单:
{ x: 2 }
与以下内容相同:
{ "x": 2 }
(即使定义了x个变量!)
解决方案
在键的标识符周围添加方括号[]:
var key=“happyCount”;myArray.push({[key]:someValueArray});
(现在关键字var不常用,所以请改用const或let)
太长,读不下去了
var key = "happyCount";
myArray.push( { [key] : someValueArray } );