Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2011, 16:40
Аспирант
Посмотреть профиль Найти все сообщения от bugmenot
 
Регистрация: 24.07.2009
Сообщений: 62

рекурсия в обратную сторону
друзья!
мне возвращается массив, где у каждого элемента имеется аттр. parent_id, который указывает на родителя (cid).
Голова в понедельник плохо работает, прошу помощи - как мне построить бесконечное дерево собирая все в обратном порядке? понимаю что рекурсивная функция,а сделать не могу.

var z = new Array();
z[0]['cid'] =1 ;
z[0]['parentid) = null;

z[1]['cid'] =2 ;
z[1]['parentid) = 1;

z[2]['cid'] =3 ;
z[2]['parentid) = 2; //etc... могут быть в линию или могут быть новой мерностью
Ответить с цитированием
  #2 (permalink)  
Старый 29.11.2011, 23:45
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Нужно массив конвертировать в дерево объектов вида
[{
  cid : 1,
  childItems : [
    {
      cid: 2,
      childItems : [{cid: 3}]
    }
  ]
}]
?

Если да — то просто обходите свой массив, строя дерево следующим образом:
Отдельного вести массив объектов, соответствующих "узлам".
При встрече нового узла в массиве смотреть на его parent и, если он не null, то вставлять текущий элемент в потомки parent'у (получать его из массива), иначе — в корневой массив.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RegExp очень нужна рекурсия и ссылочность scuter Общие вопросы Javascript 9 18.08.2011 19:27
jQuery, функция animate(), рекурсия xintrea jQuery 12 03.01.2011 12:33
Как округлить число в меньшую сторону с заданной точностью? barcelona Общие вопросы Javascript 2 19.08.2009 12:07
Рекурсия с setTimeout (jQuery) britanik Общие вопросы Javascript 0 24.04.2009 15:36
Раскрывающееся меню, как переставить на другую сторону? Resager Events/DOM/Window 8 22.08.2008 21:56