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

如果itemsFromDom包含一个id为“myId”的元素,我希望obj有一个名为“myId”的属性。上面给了我名字。

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


当前回答

首先我们需要将key定义为变量,然后我们需要将key赋值为对象。例如, Var数据= {key:'dynamic_key',value:'dynamic_value'} Var key = data.key; Var obj = {[key]: data.value} console.log (obj)

其他回答

首先我们需要将key定义为变量,然后我们需要将key赋值为对象。例如, Var数据= {key:'dynamic_key',value:'dynamic_value'} Var key = data.key; Var obj = {[key]: data.value} console.log (obj)

你可以使用这个等价的语法:

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

使用ECMAScript 2015,你可以直接在对象声明中使用括号表示:

var obj = {
  [key]: value
}

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

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

objectname。newProperty = value;

你甚至可以像这样创建对象列表

var feeTypeList = [];
$('#feeTypeTable > tbody > tr').each(function (i, el) {
    var feeType = {};

    var $ID = $(this).find("input[id^=txtFeeType]").attr('id');

    feeType["feeTypeID"] = $('#ddlTerm').val();
    feeType["feeTypeName"] = $('#ddlProgram').val();
    feeType["feeTypeDescription"] = $('#ddlBatch').val();

    feeTypeList.push(feeType);
});