Построить дерево
Добрый день
Есть такая структура: 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, время: 11:20. |