Динамический объект в объекте
Здраствуйте.
Подскажите, пожалуйста, как цикле задать свойство динамически созданного объекта, который лежит в другом объекте. :) /* * Пример свойства объекта в объекте * Нужно динамически создать такие же объекты: obj_1, obj_2 .... obj_10 */ var objs = { obj_100: { id: 100 } /* * Создаём сначала сам объект. * А вот свойство создать не удаётся */ for (var i=1; i<=10; i++) { var name = "objs.obj_" + i; [name].id = i+1; /* ТУТ ВСЯ ЗАГВОЗДКА */ } alert(ships.ship_1.id); Не понимаю как синтактически правильно написать. Идея сделать это в два цикла меня посещала, но всё-таки хотелось бы понять, как это сделать именно одним циклом. Спасибо за дельный ответ. |
for (var i=1; i<=10; i++) { var name = "obj_" + i; objs[name] = {}; objs[name].id = i+1; } |
/* * Пример свойства объекта в объекте * Нужно динамически создать такие же объекты: obj_1, obj_2 .... obj_10 */ var objs = { obj_100: { id: 100 } } /* * Создаём сначала сам объект. * А вот свойство создать не удаётся */ for (var i = 1; i <= 10; i++) { var name = "objs.obj_" + i; objs[name] = objs[name] || {}; objs[name].id = i + 1; /* ТУТ ВСЯ ЗАГВОЗДКА */ } console.dir(objs); |
Спасибо всё заработало
Спасибо, очень помогли.
Пожскажите, пожалуйста, еще как перебрать все элементы массива id, если этот массив находится в объекте obj, который в свою очередь находится в объекте objs. objs[name].id =[ ]; |
Цитата:
var arr = objs[name].id; for(var i = 0; i < arr.length; i++) { console.log(arr[i]); } forEach: var arr = objs[name].id; arr.forEach(function(elem, i, arr) { console.log(elem); }); |
Цитата:
objs = { obj_1: { id: [1, 2, 3] } obj_2: { id: [10, 20, 30] } ...... obj_10: { id: [100, 200, 300] } } Есть объект, в нем другие объекты, а у каждого объекта есть свойство-массив. Нужно циклом перебрать все элементы массивов во всех объектах. |
for(var i = 1; i <= 10; i++) { if (!objs['obj_'+i]) continue; var arr = objs['obj_'+i].id; arr.forEach(function(elem, i, arr) { console.log(elem); }); } |
Не моглы бы Вы через for написать вместо forEach?
|
for(var i = 1; i <= 10; i++) { if (!objs['obj_'+i]) continue; var arr = objs['obj_'+i].id; for(var j = 0, l = arr.length; j < l; j++) console.log(arr[j]); } } |
Цитата:
UPDATE: Хм, действительно на большом количестве итераций так есть выигрыш в скорости. |
Часовой пояс GMT +3, время: 00:17. |