在 for 循环中设置动态键和值

Adi*_*tya 1 javascript object key-value javascript-objects

这似乎是一件基本的事情,但我无法找到我哪里出错了。

我想以这种键值格式输出。

[{"10":"bob"},{"20":"Tom"},{"30":"Larry"}]
Run Code Online (Sandbox Code Playgroud)

我在做什么 -

var list = [];
var names = ["Bob","Tom","Larry"];
var ages =  ["10", "20", "30"];
for(var i=0; i<names.length; i++){
    list.push({ages[i] : names[i]})
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了意外的令牌错误。请指导我哪里出错了?

amr*_*ngh 6

要创建动态属性,您需要使用括号表示法:尝试以下操作:

var list = [];
var names = ["Bob","Tom","Larry"];
var ages =  ["10", "20", "30"];
for(var i=0; i<names.length; i++){
    list.push({[ages[i]] : names[i]})
}
console.log(list);
Run Code Online (Sandbox Code Playgroud)


Nis*_*arg 6

要将动态字符串设置为对象的属性,可以使用方括号表示法 ( obj[propVariable])。因此,只需将一个空对象存储到一个变量 ( var item = {}) 中,然后您就可以通过 设置其属性item[propVariable]

var list = [];
var names = ["Bob","Tom","Larry"];
var ages =  ["10", "20", "30"];
for(var i=0; i<names.length; i++){
  var item = {};
  item[ages[i]] = names[i];
  list.push(item);
}
console.log(list);
Run Code Online (Sandbox Code Playgroud)

您可以在此处此处阅读有关方括号表示法的更多信息。