我用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使用变量命名对象的属性?
javascript有两种类型的注释来获取javascript对象属性:
Obj = {};
1)注释;Obj.id
这只适用于对象已经有一个名为id的属性时
2)([])注释;Obj[id]如果对象没有任何名称为'id'的属性,它将创建一个名称为'id'的新属性。
下面举个例子:
当你写Obj[name]时,总会创建一个新的属性。
如果属性已经存在并且具有相同的名称,它将覆盖它。
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// This will work
obj[name]= value;
})
使用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" } } }