¿Agregar una propiedad a un objeto JavaScript usando una variable como nombre?

Resuelto Todd R asked hace 15 años • 13 respuestas

Estoy sacando elementos del DOM con jQuery y quiero establecer una propiedad en un objeto usando el idelemento DOM.

Ejemplo

const obj = {}

jQuery(itemsFromDom).each(function() {
  const element = jQuery(this)
  const name = element.attr('id')
  const value = element.attr('value')

  // Here is the problem
  obj.name = value
})

Si itemsFromDomincluye un elemento con id"myId", quiero objtener una propiedad llamada "myId". Lo anterior me da name.

¿Cómo nombro una propiedad de un objeto usando una variable usando JavaScript?

Todd R avatar Mar 30 '09 01:03 Todd R
Aceptado

Puede utilizar esta sintaxis equivalente:

obj[name] = value

Ejemplo :

let obj = {};
obj["the_key"] = "the_value";

o con características de ES6:

let key = "the_key";
let obj = {
  [key]: "the_value",
};

en ambos ejemplos, console.log(obj)devolverá:{ the_key: 'the_value' }

Christian C. Salvadó avatar Mar 29 '2009 18:03 Christian C. Salvadó

Con ECMAScript 2015 puedes hacerlo directamente en la declaración de objeto usando notación entre corchetes:

var obj = {
  [key]: value
}

Donde keypuede haber cualquier tipo de expresión (por ejemplo, una variable) que devuelva un valor:

var obj = {
  ['hello']: 'World',
  [x + 2]: 42,
  [someObject.getId()]: someVar
}
kube avatar Jun 24 '2015 11:06 kube