使用变量作为名称向 JavaScript 对象添加属性?

2022-08-29 23:53:16

我正在使用jQuery从DOM中提取项目,并希望使用DOM元素在对象上设置属性。id

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
})

如果包含一个元素,则为“myId”,我希望有一个名为“myId”的属性。以上给了我.itemsFromDomidobjname

如何使用JavaScript使用变量命名对象的属性?


答案 1

您可以使用以下等效语法:

obj[name] = value

示例

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

或具有 ES6 功能:

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

在这两个示例中,将返回:console.log(obj){ the_key: 'the_value' }


答案 2

使用 ECMAScript 2015,您可以使用括号表示法直接在对象声明中执行此操作:

var obj = {
  [key]: value
}

其中可以是任何类型的表达式(例如变量)返回值:key

var obj = {
  ['hello']: 'World',
  [x + 2]: 42,
  [someObject.getId()]: someVar
}