【问题标题】:javascript how to add new object into object after it has been createdjavascript如何在创建对象后将新对象添加到对象中
【发布时间】:2015-08-12 22:06:25
【问题描述】:

这是我的对象:

var example = {"119":{"bannerId":"119","overlay":"3","type":"1",...},"210":{"bannerId":"210","overlay":"3","type":"1",...},...}

通过这种方式,我可以非常轻松地访问或修改对象。例如,如果我想添加新属性,我只需调用它:

example[119].newProperty = 1;

并且非常容易访问它:

alert(example[119].newProperty)
alert(example[210].type)

通过知道banner id,我可以访问任何代码范围内的任何数据,这就是我选择这种模式的原因。问题是我需要在 example 创建后添加新对象。例如,我需要将其推入示例: {"30":{"bannerId":"119","overlay":"3","type":"1",...}}

我不知道这是否可能。是吗?解决这个问题的一种方法是使用数组,所以例子是数组,每个键都携带对象,我可以用对象将新键推入数组。但我不确定这是否正确,因为键将以 200、300、... console.log(example) 显示未定义的所有键在 200 之前。有这么多空键可以吗?还有其他更好的方法吗?

编辑:

我意识到这也可以用对象来完成。问题是因为我试图将新属性直接分配给这样的新对象:

example[200].example3 = 2;

猜测创建示例对象就足够了。我缺少的是这一行:

example[200] = {}

感谢您的回答,现在可以使用了!

【问题讨论】:

    标签: javascript object javascript-objects


    【解决方案1】:
    var example = {};
    
    example["30"] = {"bannerId":"119","overlay":"3","type":"1"}
    
    console.log(example);
    

    如果它在一个循环中,你也可以尝试下面的方法。

    var i = 0;
    var example = {};
    for (i=0; i<10; i++) {
      example[i] = {bannerId : i+1 , someOtherItem : i + "Hello"}
    }
    
    console.log(example);
    

    【讨论】:

      【解决方案2】:
      example[30] = {"bannerId":"119","overlay":"3","type":"1",...};
      

      【讨论】:

        【解决方案3】:

        您始终可以访问(和分配)对象的临时键,即使您一开始没有定义它们。

        因此,对于您的示例,您可以这样做:

        example["30"] = {... /*your new object*/...} 
        

        【讨论】:

          【解决方案4】:

          您似乎想扩展您的对象,您可以使用 jQuery 或下划线或多或少这样:

          $.extend(true, example, { "30": { objectId: "201" }}); // deep copy
          

          如果您不想使用任何库,只需执行以下操作:

          example["30"] = myObj["30"];
          

          【讨论】:

            猜你喜欢
            • 2010-12-17
            • 2021-09-06
            • 2017-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-14
            • 2023-01-19
            • 1970-01-01
            相关资源
            最近更新 更多