Necesito establecer un nombre de propiedad de objeto JS dinámicamente.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
El resultado debe ser:
data = {
1name: 'name1'
2name: 'name1'
}
Necesito establecer un nombre de propiedad de objeto JS dinámicamente.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
El resultado debe ser:
data = {
1name: 'name1'
2name: 'name1'
}
Respuestas:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
Tendrá que usar la []notación para establecer claves dinámicamente.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Ahora en ES6 puede usar la sintaxis literal de objetos para crear claves de objetos dinámicamente, simplemente ajuste la variable en []
var key = i + 'name';
data = {
[key] : 'name1',
}
Con ECMAScript 6, puede usar nombres de propiedades variables con la sintaxis literal del objeto, como esta:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
Esta sintaxis está disponible en los siguientes navegadores más nuevos:
Edge 12+ (Sin compatibilidad con IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https://kangax.github.io/compat-table/es6/ )
Puede agregar soporte a navegadores antiguos utilizando un transpilador como babel . Es fácil transpilar un proyecto completo si está utilizando un paquete de módulos como rollup o webpack .
No importa de dónde viene la variable. Lo principal que tenemos es ... Establecer el nombre de la variable entre corchetes "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
En la línea del comentario anterior de Sainath SR, pude establecer un nombre de propiedad de objeto js a partir de una variable en Google Apps Script (que todavía no admite ES6) definiendo el objeto y luego definiendo otra clave / valor fuera del objeto:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;