Skip to content

Instantly share code, notes, and snippets.

@dolvik
Created September 2, 2016 07:24
Show Gist options
  • Save dolvik/79c6c9177180cce70d4aaf25f3af913f to your computer and use it in GitHub Desktop.
Save dolvik/79c6c9177180cce70d4aaf25f3af913f to your computer and use it in GitHub Desktop.
Преобразование дерева в пункты меню по уровням вложенности
/*
Результат
[
['1', '2', '3'],
['1-1', '1-2', '3-1', '3-2', '3-3'],
['1-2-1', '3-2-1', '3-2-2']
]
*/
var input = [
{
"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 iter(arr, level, item){
if (!arr[level]){
arr[level] = [];
}
arr[level].push(item.name);
if (item.items){
for (var i = 0; i < item.items.length; i++){
iter(arr, level + 1, item.items[i]);
}
}
return arr;
}
var arr = [];
for (var i = 0; i < input.length; i++){
iter(arr, 0, input[i]);
}
console.log(arr);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment