[
{
id: 12,
obl: { id: 8, name: 'Название области', parent: null},
org: {id: 9, name: 'Название организаций', parent_obl: 8},
podr: {id: 8, name: 'Название Подразделение ', parent_org: 9},
dolzh: {id: 10, name: 'Программист'},
count: 4354
},
{
id: 13,
obl: { id: 5, name: 'Название области', parent: null},
org: {id: 6, name: 'Название организаций', parent_obl: 5},
podr: {id: 7, name: 'Название Подразделение ', parent_org: 6},
dolzh: {id: 10, name: 'Программист'},
count: 4354
},
{
id: 14,
obl: { id: 8, name: 'Название области', parent: null},
org: {id: 9, name: 'Название организаций', parent_obl: 8},
podr: {id: 8, name: 'Название Подразделение ', parent_org: 9},
dolzh: {id: 11, name: 'Администратор'},
count: 43
},
{
id: 15,
obl: { id: 11, name: 'Название области', parent: null},
org: {id: 12, name: 'Название организаций', parent_obl: 11},
podr: {id: 13, name: 'Название Подразделение ', parent_org: 12},
dolzh: {id: 10, name: 'Программист'},
count: 4354
},
]
Поле "parent, parent_obl, parent_org" можем отредактировать как хотим...
selectedKey: ['obl', 'org', 'podr']
[
{
obl: { id: 8, name: 'Название области'},
dolzh: [
{ id: 10, name: 'Программист'},
{ id: 10, name: 'Администратор'},
]
count: 2,
children: [
{
org: { id: 9, name: 'Название организаций'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: [
{
podr: {id: 8, name: 'Название Подразделение'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: []
}
]
},
{
org: { id: 9, name: 'Название организаций 2'},
dolzh: [
{id: 11, name: 'Администратор'},
]
count: 1,
children: [
{
podr: {id: 8, name: 'Название Подразделение'},
dolzh: [
{ id: 11, name: 'Администратор'},
]
count: 1,
children: []
}
]
}
]
},
{
obl: { id: 5, name: 'Название области'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: [
{
org: { id: 6, name: 'Название организаций'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: [
{
podr: {id: 7, name: 'Название Подразделение'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: []
}
]
}
]
},
{
obl: { id: 11, name: 'Название области'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: [
{
org: { id: 12, name: 'Название организаций'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: [
{
podr: {id: 12, name: 'Название Подразделение'},
dolzh: [
{ id: 10, name: 'Программист'},
]
count: 1,
children: []
}
]
}
]
}
]
[ {
obl: { id: 8, name: 'Название области'},
dolzh: [
{ id: 10, name: 'Программист'},
{ id: 10, name: 'Администратор'},
]
count: 2,
children: []
}]
selectedKey: [ 'org', 'podr']
[
{
org: { id: 9, name: 'Название организаций'},
dolzh: [
{ id: 11, name: 'Администратор'},
]
count: 1,
children: [
{
podr: {id: 8, name: 'Название Подразделение'},
dolzh: [
{ id: 11, name: 'Администратор'},
]
count: 1,
children: []
}
]
}
]
function createTree(data) {
const obl = {};
const org = {};
const podr = {};
data.forEach(n => {
obl[n.obl.id] = { ...n.obl, children: [] };
org[n.org.id] = { ...n.org, children: [] };
podr[n.podr.id] = { ...n.podr, children: [] };
});
data.forEach(n => podr[n.podr.id].children.push({ ...n.dolzh }));
Object.values(org).forEach(n => obl[n.parent_obl].children.push(n));
Object.values(podr).forEach(n => org[n.parent_org].children.push(n));
return Object.values(obl);
}
const tree = createTree(arr);