[
{id: 1, name: 'Категория 0-1', parent: 0},
{id: 2, name: 'Категория 0-2', parent: 0},
{id: 3, name: 'Категория 0-3', parent: 0},
{id: 4, name: 'Категория 1-1', parent: 1},
{id: 5, name: 'Категория 1-2', parent: 1},
]
[
{id: 1, name: 'Категория 0-1', parent: 0,
child: [
{id: 4, name: 'Категория 1-1', parent: 1},
{id: 5, name: 'Категория 1-2', parent: 1},
]
},
{id: 2, name: 'Категория 0-2', parent: 0},
{id: 3, name: 'Категория 0-3', parent: 0},
]
const tree = arr.reduce((sum, el) => {
if (el.parent === 0) {
sum.push(el)
} else {
const parent = arr.find(p => p.id === el.parent);
parent.children = parent.children || [];
parent.children.push(el);
}
return sum;
}, []);
var data = [
{id: 1, name: 'Категория 0-1', parent: 0},
{id: 2, name: 'Категория 0-2', parent: 0},
{id: 3, name: 'Категория 0-3', parent: 0},
{id: 4, name: 'Категория 1-1', parent: 1},
{id: 5, name: 'Категория 1-2', parent: 1},
];
var getChilds = (data,par)=>data.filter((el)=>el.parent == par).map(el=>{el["childs"]=getChilds(data,el.id);return el;});
var tree = getChilds(data,0)
[
{
"id": 1,
"name": "Категория 0-1",
"parent": 0,
"childs": [
{
"id": 4,
"name": "Категория 1-1",
"parent": 1,
"childs": []
},
{
"id": 5,
"name": "Категория 1-2",
"parent": 1,
"childs": []
}
]
},
{
"id": 2,
"name": "Категория 0-2",
"parent": 0,
"childs": []
},
{
"id": 3,
"name": "Категория 0-3",
"parent": 0,
"childs": []
}
]
var flat = [
{id: 1, name: 'Категория 0-1', parent: 0},
{id: 2, name: 'Категория 0-2', parent: 0},
{id: 3, name: 'Категория 0-3', parent: 0},
{id: 4, name: 'Категория 1-1', parent: 1},
{id: 5, name: 'Категория 1-2', parent: 1}
];
var els = [];
var tree = [];
for (var i = 0; i < flat.length; i++) {
flat[i].childs = [];
if (flat[i].parent == 0) {
tree.push(flat[i]);
} else {
els[flat[i].parent].childs.push(flat[i]);
}
els[flat[i].id] = flat[i];
}
console.log(tree);