如何从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]);