J'ai besoin de définir dynamiquement un nom de propriété d'objet JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Le résultat doit être:
data = {
1name: 'name1'
2name: 'name1'
}
J'ai besoin de définir dynamiquement un nom de propriété d'objet JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Le résultat doit être:
data = {
1name: 'name1'
2name: 'name1'
}
Réponses:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
Vous devrez utiliser la []notation pour définir les clés de manière dynamique.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Maintenant, dans ES6, vous pouvez utiliser la syntaxe littérale d'objet pour créer des clés d'objet dynamiquement, il suffit d'envelopper la variable dans []
var key = i + 'name';
data = {
[key] : 'name1',
}
Avec ECMAScript 6, vous pouvez utiliser des noms de propriété de variable avec la syntaxe littérale d'objet, comme ceci:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
Cette syntaxe est disponible dans les nouveaux navigateurs suivants:
Edge 12+ (pas de support IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https://kangax.github.io/compat-table/es6/ )
Vous pouvez ajouter une prise en charge aux navigateurs plus anciens en utilisant un transpilateur tel que babel . Il est facile de transpiler un projet entier si vous utilisez un bundler de modules tel que rollup ou webpack .
Utiliser une variable comme clé d'objet
let key = 'myKey';
let data = {[key] : 'name1'; }
Peu importe d'où vient la variable. La principale chose que nous en avons un ... Définissez le nom de la variable entre crochets "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
Dans le sens du commentaire de Sainath SR ci-dessus, j'ai pu définir un nom de propriété d'objet js à partir d'une variable dans Google Apps Script (qui ne prend pas encore en charge ES6) en définissant l'objet puis en définissant une autre clé / valeur en dehors de l'objet:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;