我用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使用变量命名对象的属性?


当前回答

如果你想动态地给一个对象添加字段,最简单的方法如下:

let params = [
  { key: "k1", value: 1 },
  { key: "k2", value: 2 },
  { key: "k3", value: 3 },
];
let data = {};

for (let i = 0; i < params.length; i++) {
  data[params[i].key] = params[i].value;
}

console.log(data); // -> { k1: 1, k2: 2, k3: 3 }

其他回答

如果你想动态地给一个对象添加字段,最简单的方法如下:

let params = [
  { key: "k1", value: 1 },
  { key: "k2", value: 2 },
  { key: "k3", value: 3 },
];
let data = {};

for (let i = 0; i < params.length; i++) {
  data[params[i].key] = params[i].value;
}

console.log(data); // -> { k1: 1, k2: 2, k3: 3 }

随着ES2015 Object的出现。OP的代码可以归结为:

var obj = Object.assign.apply({}, $(itemsFromDom).map((i, el) => ({[el.id]: el.value})));

与主题相关,但不是专门针对jquery的。我在ec6 react项目中使用了这个,可能会帮助到一些人:

this.setState({ [`${name}`]: value}, () => {
      console.log("State updated: ", JSON.stringify(this.state[name]));
    });

注:请注意引用字符。

访问对象值的3种方法 我们可以通过传入适当的键来输出对象值。因为在我的例子中我使用了表情符号作为键,这有点棘手。我们来看一个更简单的例子。

let me = {
  name: 'samantha',
};

// 1. Dot notation
me.name; // samantha

// 2. Bracket notation (string key)
me['name']; // samantha

// 3. Bracket notation (variable key)
let key = 'name';
me[key]; // samantha

知道更多

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