2010-08-15 3 views
0

Я здесь, чтобы задать вопрос о вложенном массиве. У меня есть файл, скажем, «content.json», который имеет javascript-переменные и json как свои значения в json, в качестве значения и объектов есть объекты как значения для каждого объекта. Я имею в виду, что существует глубокая цепочка для преодоления, чтобы достичь конечной ценности, и еще не принято решение о том, сколько элементов в корне и сколько элементов на любом этапе.Looping for Deep Nested Array

Какой тип цикла я должен учитывать, чтобы показать результаты в некотором формате, как <pre></pre> блок делает?

Я избегаю рекурсии из-за проблем с памятью, поэтому цикл должен быть реализован.

Благодаря

+0

пожалуйста положите некоторый пример кода – Topera

+0

вы можете просмотреть данные здесь https://docs.google.com/document/edit?id=1qdMwxe-k0DGWljwCjJYD15jbzwepoqA6PHAxUn9ao6Q&hl=en&authkey=CLD-5rIC# – Neutralizer

ответ

1

избежать рекурсию проблем с памятью является ошибкой, в основном. Рассмотрим глубоко вложенный объект как

var obj = {{{{{{{{{thing: 0}}}}}}}}} 

В псевдокоде, вы можете проверить это на любую глубину, используя

getThing(obj) 
if obj == nul return 
if obj.thing is defined you're at the bottom 
// otherwise 
getThing(obj[0]) 

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

Что вы делаете, по сути, это дерево; вам нужно только около lgглубина память, чтобы рекурсивно исследовать глубину дерева; если хотите, lgКол-во пунктов/2 дополнительная память. (Pop викторины: почему это так?)

+0

Вы правы, но как насчет того, чтобы добраться до вершины, чтобы перейти в другое отверстие? – Neutralizer

+0

Umair, вы должны заглянуть в книгу структур данных. Я не знаю, что такое хорошие, это уже 20 лет после школы града, но всегда есть Кнут, это может быть тяжело. В принципе, вы можете сохранить указатель на вершину дерева в глобальном и найти новое место таким образом. Начните с этой статьи в вики и посмотрите, поможет ли эта помощь: http://en.wikipedia.org/wiki/Binary_search_tree –