Построить дерево
Добрый день
Есть такая структура: 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 |
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); Вариант :dance: |
я тоже накатал вариант, в принципе он меня устроил
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; }); спасибо |
Часовой пояс GMT +3, время: 07:04. |