Надеюсь, этот вопрос еще не задавался:
Я использую камень предков для управления своей древовидной структурой. Я использую функцию, которая возвращает потомков узла на определенное количество уровней. Вот упрощенный пример того, что он возвращает:
[{:name => 'node 1', :depth => 1}, {:name => 'node 2', :depth => 2}
{:name => 'node 3', :depth => 1}, {:name => 'node 4', :depth => 1}]
В действительности это записи, упорядоченные правильно, так что все дочерние элементы, внуки и т. Д. Записи появляются после этой записи, поэтому мы можем предположить, что «узел 2» является потомком «узла 1». Мы также можем доказать это с помощью дополнительной информации, которую возвращает метод, которую я не включил в этот пример, чтобы упростить ее.
Я хочу превратить это в неупорядоченный список наиболее эффективным способом:
<ul>
<li>node 1
<ul>
<li>node 2</li>
</ul>
</li>
<li>node 3</li>
<li>node 4</li>
</ul>
И вот где я застрял. Наличие упорядоченного массива значений, подобного приведенному выше, отлично подходит для избежания рекурсивного кода, который обычно требуется использовать для создания неупорядоченного списка. Я думаю, что, возможно, простое сопоставление членов массива и вставка соответствующих UL и LI будет самым быстрым способом?
Ждем ваших идей!
Брендон