Помогите разобраться с reduce.
Есть массив объектов
[
{
"name":"Фамилия Имя Отчество 1",
"rank":"Техник",
"phone":"11111",
"mainPhone":"88009006565",
"description":"короткое описание",
"category":{
"name":"Категоря 1",
"address":"Тут адрес 1",
"position":100
},
"subCategory":{
"name":"Подкатегория 1",
"position":100
}
},
{
"name":"Фамилия Имя Отчество 2",
"rank":"Начальник",
"phone":"22222",
"mainPhone":"88009006564",
"description":"короткое описание",
"category":{
"name":"Категоря 1",
"address":"Тут адрес 1",
"position":100
},
"subCategory":{
"name":"Подкатегория 2",
"position":200
}
},
{
"name":"Фамилия Имя Отчество 3",
"rank":"Техник",
"phone":"22222",
"mainPhone":"88009006564",
"description":null,
"category":{
"name":"Категоря 1",
"address":"Тут адрес 1",
"position":100
},
"subCategory":{
"name":"Подкатегория 1",
"position":100
}
},
{
"name":"Фамилия Имя Отчество 3",
"rank":"Техник",
"phone":"22222",
"mainPhone":"88009006564",
"description":null,
"category":{
"name":"Категоря 2",
"address":"Тут адрес 1",
"position":100
},
"subCategory":{
"name":"Подкатегория 1",
"position":100
}
}
]
мне надо его структурировать примерно так
[
{
name: ' Категория 1',
subcadegory: [
{
name: 'Подкатегория 1',
data: [
{Тут массив объектов состоящий из данных людей которые входят в 1 категорию и 1 подкатегорию}
]
}
]
}
]
Т.е по сути из имеющегося массива нужно создать массив объектов, каждый объект это отдельная категория, в котором будет вложен еще один массив объектов состоящий из подкатегорий, а уже в нем будут данные людей которые им принадлежат.
Никак не могу понять как это сделать через reduce, я уже пытался написать сам но далеко не продвинулся и ушел в другую степь
let a = arr.reduce((accum, current) => {
if(accum.some((item) => Object.values(item).includes(current.category.name))){
} else {
accum.push({
category: current.category.name
});
}
return accum;
},[]);