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

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

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

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”的属性。以上给了我name

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


Cats萌萌
浏览 847回答 4
4回答

qq_遁去的一_1

您可以使用此等效语法:obj[name] = value

冉冉说

使用ECMAScript 2015,您可以使用括号表示法直接在对象声明中执行此操作:var obj = {   [key]: value}哪里key可以是任何类型的表达式(例如变量)返回值:var obj = {   ['hello']: 'World',   [x + 2]: 42,   [someObject.getId()]: someVar}

三国纷争

您甚至可以像这样制作对象列表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);});

眼眸繁星

使用lodash,您可以创建像这样的新对象_.set:obj = _.set({}, key, val);或者您可以像这样设置现有对象:var existingObj = { a: 1 };_.set(existingObj, 'a', 5); // existingObj will be: { a: 5 }如果要在路径中使用点(“。”),则应该注意,因为lodash可以设置层次结构,例如:_.set({}, "a.b.c", "d"); // { "a": { "b": { "c": "d" } } }
打开App,查看更多内容
随时随地看视频慕课网APP