这是我的目标:
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] = {}
感谢您的回答,现在有效!
答案 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"];