javascript如何在创建对象后将新对象添加到对象中

时间:2015-08-12 22:06:25

标签: javascript object javascript-objects

这是我的目标:

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""覆盖":" 3"&#34 ;类型":" 1",...}}

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

编辑:

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

example[200].example3 = 2;

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

example[200] = {}

感谢您的回答,现在有效!

4 个答案:

答案 0 :(得分:1)

example[30] = {"bannerId":"119","overlay":"3","type":"1",...};

答案 1 :(得分: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 :(得分:1)

您始终可以访问(并分配)对象的即席键,即使您没有首先定义它们。

因此,您可以这样做:

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

答案 3 :(得分:0)

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

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

如果您不想使用任何图书馆,请执行以下操作:

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