Динамическое создание дерева объекта
Добрый день. Появилась очень хитрая задача. Нужно сформировать динамически дерево объекта. Кто сталкивался с проблемкой? Дайте совет куда смотреть?
По поводу переборов через вложенные циклы не вариант, так как дерево может быть любой длины. Проблема у меня с тем, что не знаю как обратиться задать путь ключу. К примеру: 1) При первой итерации цикла object.key = value 2) При второй итерации цикла нужно object.х.key и т.д. Третья object.х.х.key, четвертая object.х.х.x.key Буду рад за дельный совет. Большое Вам спасибо. |
А из чего сформировать? Что на входе?
|
mu_vi,
Посмотрите в сторону рекурсии. С ней общение с древовидными объектами схожего типа упрощается в десятки раз. |
На входе текст с параметрами, типа: ключ.ключ.ключ="значение".
В сторону рекурсии смотрел. Но проблема с обращением, к ключу. Если у него есть родители, то нужно создать цепочку запросов тип object.родитель.родитель.роди ель.key. |
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. |