JavaScript将匿名对象键设置为变量名
但是,这将生成一个键为“key”的对象!如何使用变量JavaScript将匿名对象键设置为变量名,javascript,Javascript,但是,这将生成一个键为“key”的对象!如何使用变量key的值创建一个新对象?我想您的意思是: var curr = data[i], newArray = [], key = curr.Frequency.Type, obj = {key: []}; newArray.push(obj); 您可以这样做: var type = "some type"; var obj = {}; // can't do it one line
key
的值创建一个新对象?我想您的意思是:
var curr = data[i],
newArray = [],
key = curr.Frequency.Type,
obj = {key: []};
newArray.push(obj);
您可以这样做:
var type = "some type";
var obj = {}; // can't do it one line
obj[type] = [];
console.log(obj); // { "some type": [] }
在对象文本本身的JavaScript中没有办法做到这一点;语法并没有提供这种功能
编辑-在编写此答案时,上述情况属实,但ES2015在对象初始值设定项中提供了动态键:
var curr = data[i],
newArray = [],
key = curr.Frequency.Type,
obj = {};
obj[key] = [];
newArray.push(obj);
只需从函数实例化一个新的匿名对象
var curr = data[i],
key = curr.Frequency.Type,
newArray = [ { [key]: [] } ];
我意识到这是一个老问题,但对于那些通过谷歌找到这个问题的人来说,使用ES6+的方法是在对象文字中使用方括号表示法:
obj = new function () {
this[key] = [];
};
其中打印:
const key = 'dynamicKey';
const value = 5;
const objectWithDynamicKey = {
staticKey: 'another value',
[key]: value
}
console.log(objectWithDynamicKey)
所以你的例子应该是:
{
staticKey: 'another value',
dynamicKey: 5
}
这是一个非常常见的问题。可能的重复可能的重复这里有一个更老的问题:
var curr = data[i];
var newArray = [];
var key = curr.Frequency.Type;
var obj = { [key]: [] };
newArray.push(obj);