JavaScript按变量设置对象键

IT技术 javascript
2021-01-12 01:25:27

我正在用 JavaScript 构建一些对象并将这些对象推送到一个数组中,我将要使用的密钥存储在一个变量中,然后像这样创建我的对象:

var key = "happyCount";
myArray.push( { key : someValueArray } );

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

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

2个回答

您需要先制作对象,然后使用[]来设置它。

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,
}
@Jake 您现在可以在 ES6 或 ES7 中编程,并让 Babel 将您的 JS 文件编译回 ES5。这就是当今构建 web 应用程序的方式。
2021-03-15 01:25:27
@Frank Nocke 我期待能够在大约 10 年后使用它,因为我们必须支持它的所有“浏览器”......
2021-03-18 01:25:27
请注意,在 ES6 中情况变得更好,即{[key]:someValueArray}
2021-03-26 01:25:27
@AlexG:问题中使用了它。
2021-03-31 01:25:27
对于那些想知道这个 ES6 特性如何命名的人:它是 Computed property name
2021-04-08 01:25:27

在 ES6 中,你可以这样做。

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

它称为计算属性名称,它使用括号表示法(方括号)实现 []

例子: { [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"}

我使用下划线提供了一个我认为人们可能对此链接感兴趣的解决方案:stackoverflow.com/questions/5640988/...
2021-03-22 01:25:27