【问题标题】:Set dynamic key and values inside for loop [duplicate]在for循环内设置动态键和值[重复]
【发布时间】:2019-01-11 00:19:25
【问题描述】:

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

我希望以这种键值格式输出。

[{"10":"bob"},{"20":"Tom"},{"30":"Larry"}]

我在做什么-

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

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

【问题讨论】:

  • 您需要将密钥包含在[] 中以强制执行Computed property names
  • 你为什么想要那个数据结构?这没什么意义。

标签: javascript object javascript-objects key-value


【解决方案1】:

要将动态字符串设置为对象的属性,可以使用方括号表示法 (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);

您可以阅读有关方括号符号herehere 的更多信息。

【讨论】:

    【解决方案2】:

    要创建动态属性,您需要使用 bracket notation : 请尝试以下操作:

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

    【讨论】:

    • 为什么不赞成这个答案?它实际上工作正常。
    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多