我需要动态设置JS对象属性名称。
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
结果应该是:
data = {
1name: 'name1'
2name: 'name1'
}
答案 0 :(得分:164)
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
答案 1 :(得分:131)
您必须使用[]
表示法动态设置密钥。
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
现在在ES6中,您可以使用对象文字语法动态创建对象键,只需将变量包装在[]
var key = i + 'name';
data = {
[key] : 'name1',
}
答案 2 :(得分:107)
使用ECMAScript 6,您可以将变量属性名称与对象文字语法一起使用,如下所示:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
以下较新的浏览器中提供了此语法:
Edge 12+(无IE支持),FF34 +,Chrome 44 +,Opera 31 +,Safari 7.1 +
(https://kangax.github.io/compat-table/es6/)
您可以使用transpiler等babel添加对旧版浏览器的支持。如果您使用rollup或webpack等模块捆绑包,则很容易转换整个项目。
答案 3 :(得分:21)
这是动态设置值
的方法var jsonVariable = {};
for (var i = 1; i < 3; i++) {
var jsonKey = i + 'name';
jsonVariable[jsonKey] = 'name' + i;
}
答案 4 :(得分:7)
变量的来源无关紧要。主要的是我们有一个...... 在方括号“[..]”之间设置变量名称。
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
答案 5 :(得分:0)
jsonVariable = {}
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1'
}
这类似于
jsonVariable = {
1name : 'name1'
2name : 'name1'
}
答案 6 :(得分:0)
data = {
[key] : 'name1'
}
答案 7 :(得分:0)
按照上述Sainath SR的注释,我可以通过定义对象,然后在外部定义另一个键/值,从Google Apps脚本(尚不支持ES6)中的变量设置js对象属性名称对象的
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;