Ho bisogno di impostare dinamicamente un nome di proprietà dell'oggetto JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Il risultato dovrebbe essere:
data = {
1name: 'name1'
2name: 'name1'
}
Ho bisogno di impostare dinamicamente un nome di proprietà dell'oggetto JS.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Il risultato dovrebbe essere:
data = {
1name: 'name1'
2name: 'name1'
}
Risposte:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
Dovrai usare la []notazione per impostare le chiavi in modo dinamico.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Ora in ES6 è possibile utilizzare la sintassi letterale dell'oggetto per creare chiavi dell'oggetto dinamicamente, semplicemente racchiudendo la variabile []
var key = i + 'name';
data = {
[key] : 'name1',
}
Con ECMAScript 6, è possibile utilizzare nomi di proprietà variabili con la sintassi letterale dell'oggetto, in questo modo:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
Questa sintassi è disponibile nei seguenti browser più recenti:
Edge 12+ (nessun supporto IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https://kangax.github.io/compat-table/es6/ )
Puoi aggiungere supporto ai browser più vecchi usando un transpiler come babel . È facile traspilare un intero progetto se si utilizza un bundle di moduli come rollup o webpack .
Utilizzare una variabile come chiave oggetto
let key = 'myKey';
let data = {[key] : 'name1'; }
Non importa da dove provenga la variabile. La cosa principale ne abbiamo una ... Imposta il nome della variabile tra parentesi quadre "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
Sulla falsariga del commento di Sainath SR sopra, sono stato in grado di impostare un nome di proprietà dell'oggetto js da una variabile in Google Apps Script (che non supporta ancora ES6) definendo l'oggetto e quindi definendo un'altra chiave / valore al di fuori dell'oggetto:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;