2015-08-12 3 views
0

Это мой объект:Javascript, как добавить новый объект в объект после того, как он был создан

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) 

Зная баннерной идентификатор, я могу получить доступ к любым данным из любого объема кода, именно по этой причине я выбрал эту модель. Проблема в том, что мне нужно добавить новый объект внутри example после его создания. Например, мне нужно нажать это на пример: {"30": {"bannerId": "119", "overlay": "3", "type": "1", ...}}

И я не знаю, возможно ли это. Это? Один из способов решения этой проблемы - использовать массив, поэтому примером будет массив, и каждый ключ будет переносить объект, и я мог бы нажать на новый массив с объектом. Но я не уверен, что это правильно, потому что ключ будет начинаться с 200, 300, ... console.log (пример) показывается undefined для всех ключей до 200. Прекрасно ли так много пустых ключей? Есть ли другой лучший способ?

EDIT:

я понял, что это может быть сделано также с объектом. Проблема заключалась в том, потому что я пытался присвоить новое свойство непосредственно в новый объект, как это:

example[200].example3 = 2; 

угадывание достаточно создается этот пример объекта. То, что мне не хватало, это линия:

example[200] = {} 

Спасибо за ответы, сейчас работает!

ответ

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); 
1
example[30] = {"bannerId":"119","overlay":"3","type":"1",...}; 
1

Вы можете всегда доступ (и назначить) специальные ключи объектов, даже если вы не определили их в первую очередь.

Так для примера вы можете просто сделать:

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

кажется, что вы хотите расширить свой объект, вы можете использовать JQuery или подчеркнуть более или менее, как это:

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

If вы не хотите использовать какую-либо библиотеку просто:

example["30"] = myObj["30"]; 
Смежные вопросы