Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2020, 15:27
Интересующийся
Отправить личное сообщение для PetrIII Посмотреть профиль Найти все сообщения от PetrIII
 
Регистрация: 27.06.2014
Сообщений: 12

Построить дерево
Добрый день
Есть такая структура:
010.000.000.000.000.000 - 1 уровень
010.010.000.000.000.000 - 2 уровень
010.010.000.000.000.010 - элемент 2 уровня
010.010.010.000.000.000 - 3 уровень
010.010.010.010.000.000 - 4 уровень (первый элемент)
010.010.010.010.000.010 - элемент 4 уровня
010.010.010.010.000.020 - элемент 4 уровня
010.010.010.020.000.000 - 4 уровень (второй элемент)
010.010.010.020.000.010 - элемент 4 уровня
010.010.010.020.000.020 - элемент 4 уровня

нужно из этой структуры получить дерево в виде json
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2020, 17:30
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

const tree = (obj, path) => {
    let keys = path.split('.'),
        key;
    while (key = keys.shift()) {
        typeof obj[key] === 'undefined' && (obj[key] = {});
        obj = obj[key];
    }
    return obj;
};

let data = {};
tree(data, '010.000.000.000.000.000');
tree(data, '010.010.000.000.000.000');
tree(data, '010.010.000.000.000.010');
tree(data, '010.010.010.000.000.000');
tree(data, '010.010.010.010.000.000');
tree(data, '010.010.010.010.000.010');
tree(data, '010.010.010.010.000.020');
tree(data, '010.010.010.020.000.000');
tree(data, '010.010.010.020.000.010');
tree(data, '010.010.010.020.000.020');

console.dir(data);

Вариант
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2020, 17:57
Интересующийся
Отправить личное сообщение для PetrIII Посмотреть профиль Найти все сообщения от PetrIII
 
Регистрация: 27.06.2014
Сообщений: 12

я тоже накатал вариант, в принципе он меня устроил

var m = arr.map(function (itm) {
var sp = itm.level.split('.');
for (var i = sp.length; i >= 0; i--) {
if (parseInt(sp[i]) > 0) {
sp[i] = '000';
break;
}
}
itm.parent = sp.join('.');
return itm;
});

спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построить Dom дерево каталогов и файлов alexander909090 Events/DOM/Window 2 11.05.2020 15:26
не знаю как построить график Женя150 Общие вопросы Javascript 0 22.10.2012 17:09
Поректомендуйте пожалуйста очень быстрое дерево Casufi Элементы интерфейса 0 17.02.2012 12:37
дерево adjacency в jqGrid Soaring jQuery 0 14.03.2011 21:06
Построить дерево по xml. mmfStudent jQuery 8 01.09.2010 04:21