【问题标题】:Adding to an object in JavaScript在 JavaScript 中添加到对象
【发布时间】:2009-01-29 14:39:23
【问题描述】:

我有一个 JSON 字符串,我已将其转换为对象:

data=eval("(" + jsonString + ")");

我可以毫无问题地访问所有位并显示它们。 问题是如何添加到对象中。

例如:

data.car[0].name = "civic";<BR>
data.car[1].name = "s2000";

那么,如果我有一个输入框来添加一辆新车,我该如何将它添加到汽车数组中?

干杯

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    使用上面的示例,类似于:

    data.car[0] = { name: "civic" };
    data.car[1] = { name: "s2000" };
    

    这将为数组元素分配一个新对象,具有一个属性“名称”。 Alertnatively,为了更多的代码重用:

    function car( name) {
        this.name = name
    }
    data.car[0] = new car("civic");
    data.car[1] = new car("s2000");
    

    【讨论】:

    • 这意味着虽然数组的成员会有不同的构造函数,这可能很有用,但它可能会导致问题。
    • 你会破坏汽车的其他财产
    • 取决于使用情况,但是如果使用 instanceof 可能会导致问题
    【解决方案2】:

    这将在数组中添加一辆新车:-

    data.car.push({name: "Zafira"});
    

    顺便说一句,您在使用 eval 解析 JSON 时要小心,这可能会导致您的代码容易受到注入攻击。

    【讨论】:

      【解决方案3】:

      在 javascript 中,有两种方法可以将属性添加到对象。

      1. 直接

        data.car[0].name = 'jose'; 
        
      2. 像数组一样访问:

        data.car[0]['name'] = 'jose'; 
        

      因此,如果您有一个名称字段和一个字段作为您可以创建的值,那么就像:

      <input type="text" id="name" />
      <input type="text" id="value" />
      <script type="text/javascript">
          var d = function(id) {
              return document.getElementById(id);
          }
          data.car[0][d("name").value] = d("value").value
      </script> 
      

      【讨论】:

        【解决方案4】:

        假设您有一个输入框,您可以附加一个模糊事件(或在您想要添加汽车时)

        function addCar(carname){
            data.car.push({name:carname})
        }
        

        【讨论】:

          【解决方案5】:

          您应该能够使用您发布的语法。 Javascript 允许您通过赋值向对象添加属性。由于 JSON 字符串只是被解析为普通对象,因此您只需指定一个新属性并分配您想要的值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-17
            • 2018-03-15
            • 2017-01-19
            • 1970-01-01
            • 1970-01-01
            • 2016-02-11
            • 1970-01-01
            • 2012-08-11
            相关资源
            最近更新 更多