Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Преобразование дерева в пункты меню по уровням вложенности
- пример дерева:
- [
- {
- name: '1',
- items: [
- {name: '1-1'},
- {
- name: '1-2',
- items: [
- {name: '1-2-1'}
- ]
- }
- ]
- },
- {
- name: '2'
- },
- {
- name: '3',
- items: [
- {name: '3-1'},
- {
- name: '3-2',
- items: [
- {name: '3-2-1'},
- {name: '3-2-2'}
- ]
- },
- {name: '3-3'}
- ]
- }
- ]
- */
- function menu(tree) {
- let count = tree.length;
- let result = {};
- let level = 0;
- while ( tree.length > 0 ) {
- let cur = tree.shift();
- if (cur.items && cur.items.length > 0) {
- cur.items.forEach(el => {
- tree.push(el);
- })
- }
- if (level in result) {
- result[level].push(cur.name)
- } else {
- result[level] = [cur.name]
- }
- if (--count === 0) {
- count = tree.length;
- level++;
- }
- }
- return Object.values(result);
- }
- console.log(menu(menuTree))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement