Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从变量设置JS对象属性名称_Javascript - Fatal编程技术网

Javascript 如何从变量设置JS对象属性名称

Javascript 如何从变量设置JS对象属性名称,javascript,Javascript,我需要动态设置JS对象属性名 for(i=1; i<3; i++) { var key = i+'name'; data = { key : 'name1', } } var jsonVariable = {}; for(i=1; i<3; i++) { var jsonKey = i+'name'; jsonVariable[jsonKey] = 'name1'; } 这是动态设置值的方法 var jsonVa

我需要动态设置JS对象属性名

for(i=1; i<3; i++) {
    var key  = i+'name';

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

}

这是动态设置值的方法

var jsonVariable = {};
for (var i = 1; i < 3; i++) {
    var jsonKey = i + 'name';
    jsonVariable[jsonKey] = 'name' + i;
}
var jsonVariable={};
对于(变量i=1;i<3;i++){
var jsonKey=i+'name';
jsonVariable[jsonKey]=“name”+i;
}
var jsonVariable={};
对于(变量i=1;i<3;i++){
jsonVariable[i+'name']='name'+i;
}

您必须使用
[]
符号来动态设置键

for(i=1; i<3; i++) {
    var key  = i+'name';

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

}

使用ECMAScript 6,可以将变量属性名称与对象文字语法一起使用,如下所示:

var keyName = 'myKey';
var obj = {
              [keyName]: 1
          };
obj.myKey;//1
此语法在以下较新的浏览器中可用:

Edge 12+(不支持IE)、FF34+、Chrome 44+、Opera 31+、Safari 7.1+

()


您可以通过使用一个新的浏览器来添加对旧浏览器的支持,例如。如果您使用的是模块绑定器(如或),则可以轻松地传输整个项目。

无论变量来自何处。最重要的是我们有一个。。。 在方括号“[…]”之间设置变量名


将变量用作对象键

let key = 'myKey';

let data = {[key] : 'name1'; }

参见上文Sainath S.R的评论,通过定义对象,然后在对象外部定义另一个键/值,我可以从Google Apps脚本(目前还不支持ES6)中的变量设置js对象属性名称:

var salesperson = ...

var mailchimpInterests = { 
        "aGroupId": true,
    };

mailchimpInterests[salesperson] = true;

jsonVariable={};不应在for循环内初始化。此外,您正在使jsonVariable global hereMusa下面的响应也正确地阐明了使用[]表示法实际上是唯一的方法。还请注意,下面@ChilNut的响应现在描述了使用ES6执行此操作的最简单方法,使用新的语法,OP试图实现的目标只有在循环限制为硬编码且较小的情况下才可能实现。如果循环限制是连续的,为什么不使用数组?我想知道你们中的哪三个击中了错误的箭头。来吧,fess up.这个可能的副本工作得很好,我想知道它是否在所有浏览器/版本中都能工作感谢添加了很棒的ES6语法没有ES6我无法定义var payload={dynamicKey:val},我需要做var payload={}和payload[variableName]=val.您能否再详细说明一下,让其他人知道为什么这可能是一个解决方案?您添加的信息很好,只是永远不要仅用代码给出答案;)
var keyName = 'myKey';
var obj = {
              [keyName]: 1
          };
obj.myKey;//1
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
let key = 'myKey';

let data = {[key] : 'name1'; }
var salesperson = ...

var mailchimpInterests = { 
        "aGroupId": true,
    };

mailchimpInterests[salesperson] = true;