Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Динамическое создание дерева объекта (https://javascript.ru/forum/misc/53134-dinamicheskoe-sozdanie-dereva-obekta.html)

mu_vi 22.01.2015 10:57

Динамическое создание дерева объекта
 
Добрый день. Появилась очень хитрая задача. Нужно сформировать динамически дерево объекта. Кто сталкивался с проблемкой? Дайте совет куда смотреть?

По поводу переборов через вложенные циклы не вариант, так как дерево может быть любой длины.

Проблема у меня с тем, что не знаю как обратиться задать путь ключу. К примеру:

1) При первой итерации цикла object.key = value
2) При второй итерации цикла нужно object.х.key и т.д.
Третья object.х.х.key, четвертая object.х.х.x.key

Буду рад за дельный совет. Большое Вам спасибо.

danik.js 22.01.2015 11:00

А из чего сформировать? Что на входе?

tsigel 22.01.2015 11:04

mu_vi,
Посмотрите в сторону рекурсии. С ней общение с древовидными объектами схожего типа упрощается в десятки раз.

mu_vi 22.01.2015 11:11

На входе текст с параметрами, типа: ключ.ключ.ключ="значение".

В сторону рекурсии смотрел. Но проблема с обращением, к ключу. Если у него есть родители, то нужно создать цепочку запросов тип object.родитель.родитель.роди ель.key.

tsigel 22.01.2015 11:53

var str = "key1.key2.petya=trololo";

  var parse = function (str) {
    var result = {};
    var elem = result;
    var keys = str.split(".");
    for (var i = 0; i < keys.length; i++) {
       if (i < keys.length - 1) {
          elem[keys[i]] = {};
          elem =  elem[keys[i]];
       } else {
          var tmp = keys[i].split("=");
          elem[tmp[0]] = tmp[1];
       }
    }
    return result;
  }

alert(JSON.stringify(parse(str), "", 4));


Это конечно говнокод, но идея та?
Приведите пожалуйста небольшой, но реальный пример данных которые надо распарсить в дерево (с максимальным количеством "use-case")


Часовой пояс GMT +3, время: 12:13.