Мені потрібно динамічно встановити ім'я властивості об’єкта JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Результат повинен бути:
data = {
1name: 'name1'
2name: 'name1'
}
Мені потрібно динамічно встановити ім'я властивості об’єкта 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;
}
Вам потрібно буде використовувати []позначення для динамічного встановлення клавіш.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Тепер у ES6 ви можете використовувати синтаксис літерального об'єкта для динамічного створення об'єктних ключів, просто оберніть змінну в []
var key = i + 'name';
data = {
[key] : 'name1',
}
За допомогою 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/ )
Ви можете додати підтримку до старих браузерів, використовуючи транспілятор, такий як babel . Легко transpile весь проект , якщо ви використовуєте модуль пакетування , такі як накопичувальний пакет або WebPack .
Використовуйте змінну як об'єктний ключ
let key = 'myKey';
let data = {[key] : 'name1'; }
Дивіться, як переглядати об’єкт тут
Не має значення, звідки походить змінна. Головне, у нас є одне ... Встановити назву змінної між квадратними дужками "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
По лінії коментаря Sainath SR вище, я зміг встановити ім’я властивості об’єкта js зі змінної в Google Apps Script (яка ще не підтримує ES6), визначивши об'єкт, а потім визначивши інший ключ / значення поза об’єктом:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;