Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
parent вместо избыточных level, left_key и right_key?как вы предлагаете организовать сортировку «по-важности», как часто бывает у заказчиков?Дополнительным целочисленным полем «vazhnostj» в таблице, и сортировать по нему? :)
for(... in ...) для итерирования массивов?Array(). Использование же литералов упасет вас от такой проблемы. К тому их использование соответствует принципу KISS.for(... in ...) для массива?for (var i in arr) if (arr.hasOwnProperty(i)) { ... } и не парился массив это или объект.id, pid и другими. К ней выполняется иерархичный запрос вида…
CONNECT BY PRIOR id = pid AND PRIOR pid <> PRIOR id START WITH pid = 0
level помимо прочих полей.html = "<ul>\n"
prev_lvl = 1
DB.fetch(sql) do |row|
cur_lvl = row[:lvl].to_i
0.upto(prev_lvl - cur_lvl) { html += "</ul>\n" } if cur_lvl < prev_lvl
html += "<ul>\n" if cur_lvl != prev_lvl
html += "<li>#{row[:title]}\n"
prev_lvl = cur_lvl
end
html += "</ul>"
for NODE in TREE
BOOST[NODE.parent_id].push NODE
BOOST[NODE.id] #=> массив вложенных
рекурсивный ад?
После получения дочерних элементов, необходимо очистить от них исходный массив. Я не придумал ничего лучше, чем написать еще одну функцию.
При выборке дочерних проверяются условия на left, right?
1) не очень эффективно
if (under && l_in && r_in) {childs.push(arr[i]); /*здесь что-то вроде delete arr[i]*/}
я не могу понять смысла в его существовании
Как по-вашему, увеличит ли эффективность кода удаление элемента из массива элемента сразу при выполнении условия
Генерация древовидного меню модели представления Nested Sets