如何从variables中设置JS对象属性名称

我需要dynamic设置JS对象的属性名称。

for(i=1; i<3; i++) { var key = i+'name'; data = { key : 'name1', } } 

结果应该是:

 data = { 1name: 'name1' 2name: 'name1' } 
 var jsonVariable = {}; for(var i=1; i < 3; i++) { jsonVariable[i + 'name'] = 'name' + i; } 

您必须使用[]符号来dynamic设置密钥。

 var jsonVariable = {}; for(i=1; i<3; i++) { var jsonKey = i+'name'; jsonVariable[jsonKey] = 'name1'; } 

现在在ES6中,您可以使用对象字面值语法来dynamic创build对象关键字,只需将该variables包装在[]

 var key = i + 'name'; data = { [key] : 'name1', } 

使用ECMAScript 6,可以使用具有对象字面值语法的variables属性名称,如下所示:

 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/

您可以使用诸如babel之类的转换程序向旧版浏览器添加支持。 如果您正在使用模块打包程序 (如汇总或webpack) ,则可以轻松整理整个项目。

这是dynamic设置值的方法

 var jsonVariable = {}; for (var i = 1; i < 3; i++) { var jsonKey = i + 'name'; jsonVariable[jsonKey] = 'name' + i; } 

variables来自哪里并不重要。 主要的东西我们有一个…方括号“[..]”之间设置variables名称。

 var optionName = 'nameA'; var JsonVar = { [optionName] : 'some value' } 
 jsonVariable = {} for(i=1; i<3; i++) { var jsonKey = i+'name'; jsonVariable[jsonKey] = 'name1' } 

这将是类似的

  jsonVariable = { 1name : 'name1' 2name : 'name1' } 

看一下这个

 jsonVariable = {}; for(i=1; i<=3; i++) { jsonVariable[i]=i+'name'; } document.writeln(jsonVariable[1]); document.writeln(jsonVariable[2]); document.writeln(jsonVariable[3]);​