Muszę dynamicznie ustawić nazwę właściwości obiektu JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Wynik powinien być:
data = {
1name: 'name1'
2name: 'name1'
}
Muszę dynamicznie ustawić nazwę właściwości obiektu JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Wynik powinien być:
data = {
1name: 'name1'
2name: 'name1'
}
Odpowiedzi:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
Będziesz musiał używać []notacji, aby dynamicznie ustawiać klucze.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Teraz w ES6 możesz używać składni literału obiektowego do dynamicznego tworzenia kluczy obiektów, po prostu zawiń zmienną []
var key = i + 'name';
data = {
[key] : 'name1',
}
Dzięki ECMAScript 6 możesz używać nazw właściwości zmiennych ze składnią literału obiektu, na przykład:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
Ta składnia jest dostępna w następujących nowszych przeglądarkach:
Edge 12+ (brak obsługi IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https://kangax.github.io/compat-table/es6/ )
Możesz dodać obsługę starszych przeglądarek za pomocą transpilera, takiego jak babel . Transpile całego projektu jest łatwe, jeśli używasz pakietu modułów, takiego jak rollup lub webpack .
Użyj zmiennej jako klucza obiektu
let key = 'myKey';
let data = {[key] : 'name1'; }
Zobacz, jak iteretować swój obiekt tutaj
Nie ma znaczenia, skąd pochodzi zmienna. Najważniejsze, że mamy jedno ... Ustaw nazwę zmiennej w nawiasach kwadratowych "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
Zgodnie z powyższym komentarzem Sainath SR, mogłem ustawić nazwę właściwości obiektu js na podstawie zmiennej w Google Apps Script (która jeszcze nie obsługuje ES6), definiując obiekt, a następnie definiując inny klucz / wartość poza obiektem:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;