У меня есть массив довольно простых объектов:
[
{ category: 'A', level: 'Aa', sublevel: 'Aaa' },
{ category: 'A', level: 'Aa', sublevel: 'Aab' },
{ category: 'A', level: 'Ab', sublevel: 'Abb' },
{ category: 'B', level: 'Ac', sublevel: 'Abc' }
]
Подуровни всегда уникальны, уровни и категории могут быть одинаковыми.
Я хочу создать следующий объект из этого массива:
[
{
category: 'A',
children: [
{
level: 'Aa',
children: [
{
sublevel: 'Aaa'
},
{
sublevel: 'Aab'
}
]
},
{
level: 'Ab',
children: [
{
sublevel: 'Abb'
}
]
}
]
},
{
category: 'B',
children: [
{
level: 'Ac',
children: [
{
sublevel: 'Abc'
}] }] }]
Другими словами, я хочу объединить category
в один, если есть два объекта с одной категорией, и поместить его уровни в массив children
. Если есть также объекты с одинаковыми категориями и уровнями, объедините те же уровни в один и поместите подуровни в соответствующий массив children
.
Итерация по массиву на самом деле не работала с [].map
и [].reduce
и различными типами циклов. Также пробовал слияние lodash с и deepmerge, но подуровни для них кажутся невидимыми.
Каковы элегантные способы построения объектов в условиях с глубиной более 2 уровней?