Javascript элементы с бесконечной вложенностью, как в таком массиве вывести все элементы

программирование проблема JavaScript массивы

Здравствуйте, помогите пожалуйста, есть массив.

var node_list = {
nodes_a : {
'2' : {
tag: 'section',
type: 'row',
prefix: 'a',
children:{
'3' : {
tag: 'section',
type: 'col',
prefix: 'a'
},
'4' : {
tag: 'section',
type: 'col',
prefix: 'b',
children:
'5' : {
tag: 'section',
type: 'row',
prefix: 'a',
children:{
'6' : {
tag: 'section',
type: 'col',
prefix: 'a'
},
'7' : {
tag: 'section',
type: 'col',
prefix: 'b'
}
}
}
}
}
}
}
}

Можно ли его вывести весь с учетом вложенности, т.е. например
Выводим

node_list.node_a[2]

следом выводим внутри node_list.node_a[2] - node_list.node_a[2].children[3] и node_list.node_a[2].children[4]

Внутри node_list.node_a[2].children[4] выводим node_list.node_a[2].children[4].children[5]
Внутри node_list.node_a[2].children[4].children[5] выводим node_list.node_a[2].children[4].children[5].children[7] и node_list.node_a[2].children[4].children[5].children[8]

и так далее пока в ветке не кончатся children

пока что вывожу элементы следующим образом:

$.each(node_list.nodes_a, function(index, val) {
if(node_list.nodes_a[index].children){
$.each(node_list.nodes_a[index].children, function(index_a, val_a) {
console.log('parent : '+index+' children : '+index_a);
});
}
});

но, что бы сделать больше уровней вложенности прийдется делать еще цикл each

Примечание:
Требуется вывести в итоге подобную конструкцию, а не переведенный в строку массив.

Вложенных в друг друга секций может быть безграничное множество

<section class="row a">
<section class="row a-a">
<section class="col a">

</section>
<section class="col b">

</section>
</section>
</section>

Примечание:
holden321, ошибки в коде нет

Примечание:
сорри есть вот массив без ошибки

var node_list = {
nodes_a : {
'2' : {
tag: 'section',
type: 'row',
prefix: 'a',
children:{
'3' : {
tag: 'section',
type: 'col',
prefix: 'a'
},
'4' : {
tag: 'section',
type: 'col',
prefix: 'b',
children: {
'5' : {
tag: 'section',
type: 'row',
prefix: 'a',
children:{
'6' : {
tag: 'section',
type: 'col',
prefix: 'a'
},
'7' : {
tag: 'section',
type: 'col',
prefix: 'b'
}
}
}
}
}
}
}
}
}
Ответы:
В коде ошибка. Перед '5' не хватает { и пониже как раз дырка для }
Для красивого вывода можно воспользоваться функцией JSON.stringify:
console.log(JSON.stringify(node_list,null,"\t"));


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.