Динамический объект в объекте
Здраствуйте.
Подскажите, пожалуйста, как цикле задать свойство динамически созданного объекта, который лежит в другом объекте. :)
/*
* Пример свойства объекта в объекте
* Нужно динамически создать такие же объекты: 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: Хм, действительно на большом количестве итераций так есть выигрыш в скорости. |
Работает часть кода.
Спасибо!!!:dance:
|
Цитата:
|
| Часовой пояс GMT +3, время: 17:54. |