Как установить имя свойства объекта JS из переменной

Мне нужно установить динамическое имя свойства объекта JS.

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

    data = {
        key : 'name1',
    }
}

Результат должен быть:

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

Ответ 1

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

Ответ 2

Вам нужно использовать нотацию [] для динамического набора ключей.

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

}

Теперь в ES6 вы можете использовать синтаксис литерала объекта для динамического создания ключей объектов, просто оберните переменную в []

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

Ответ 3

С 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.

Ответ 4

Это способ динамически установить значение

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

Ответ 5

Не имеет значения, откуда приходит переменная. Главное, у нас есть один... Задайте имя переменной между квадратными скобками "[..]".

var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}

Ответ 6

data = {
    [key] : 'name1'
}

Ответ 7

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

это будет похоже на

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

Ответ 8

Следуя приведенному выше комментарию Sainath SR, я смог установить имя свойства объекта js из переменной в скрипте Google Apps (которая пока не поддерживает ES6), определив объект, а затем определив другой ключ/значение вне объекта:

var salesperson = ...

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

mailchimpInterests[salesperson] = true;

Ответ 9

проверьте это

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

​