【问题标题】:Creating a variable name of a property in a JSON object在 JSON 对象中创建属性的变量名称
【发布时间】:2012-12-10 20:25:55
【问题描述】:

我正在运行这段代码。

var output = {"records": []};
for(i = 0; i < data.length; i++)
  output.records[i] = { propertyName : data[i][propertyName] }

我希望输出格式如下。

{ "cat" : "mjau" }
{ "dog" : "woff" }

相反,我对此感到惊讶。

{ "propertyName" : "mjau" }
{ "propertyName" : "woff" }

如何获取变量propertyName

我正在尝试创建一个解析器,它将创建许多记录,这些记录都是 cat 但是,当从其他地方调用时,记录应该有 dog而是财产。我希望避免为此创建两个不同的代码段。

我找到了this question我怀疑包含了我的问题的答案。但是,由于无知,我不明白。

【问题讨论】:

  • 你把那些猫狗放在哪里了??我的意思是你在哪里持有这些财产?
  • @jbabey 恭喜!我在我的问题中提到我找到了那个确切的问题。我还解释说,由于缺乏技能,我不明白。 再次提及它有什么意义?此外,我在这里得到的答案非常清楚并且实际上很有帮助,所以 exact 重复它不是。 :)
  • @BhushanFirake 我不确定你的意思。这些只是我将使用的一些属性名称。

标签: javascript json javascript-objects


【解决方案1】:

对象字面量中的键不会在 JavaScript 中计算。因此,您需要创建一个空对象 ({}),然后动态分配密钥:

output.records[i] = {};
output.records[i][propertyName] = data[i][propertyName]

【讨论】:

    【解决方案2】:
    var a = {b:'c'}
    

    就像

    var a = {};
    a['b'] = 'c';
    

    你想要的是

    a[b] = c
    

    那是

    output.records[i] = {};
    output.records[i][propertyName] = data[i][propertyName];
    

    您在此 MDN 文档中有:Working with objects

    【讨论】:

      【解决方案3】:

      { propertyName : data[i][propertyName] } 中,属性名称部分应该是常量字符串。如果你传递一个变量,它不会获取它的值。

      你要做的是

      for(i = 0; i < data.length; i++){
        var a = {};
        a[propertyName] = data[i][propertyName];
        output.records.push(a);
      }
      

      【讨论】:

        【解决方案4】:

        你可以试试这个:

        '"' + propertyName + '"' : ...
        

        【讨论】:

        • 我注意到您的方法与大多数其他方法不同。是用其他语法表达的同一件事还是不同的方法?如果是这样,在这种情况下哪个更可取?
        • 没有。我误解了。我在上面所做的只是将字符串用引号括起来。 OP 可能会得到类似 ""propertyName"" 的东西。
        猜你喜欢
        • 2011-03-10
        • 2018-12-27
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多