I have this array, that I want to transform into the array below so we can have a shorted and clearer object
const data = [
{
"horarioHeader": {
"hr_id": 105,
"hr_nombre": "Prueba 2",
"hr_id_empresa": 14,
},
"horarioDetalles": [
{
"hrd_id": 4,
"hrd_hr_id": 105,
"hrd_nombre": "Prueba detalle 2",
"hrd_dia_semana_ini": null,
"hrd_dia_mes_ini": null,
"hrd_mes_ini": null,
"hrd_anio_ini": null
}
]
},
{
"horarioHeader": {
"hr_id": 105,
"hr_nombre": "Prueba 2",
"hr_id_empresa": 14,
},
"horarioDetalles": [
{
"hrd_id": 5,
"hrd_hr_id": 105,
"hrd_nombre": "Prueba detalle 3",
"hrd_dia_semana_ini": null,
"hrd_dia_mes_ini": null,
"hrd_mes_ini": null,
"hrd_anio_ini": null
}
]
},
{
"horarioHeader": {
"hr_id": 105,
"hr_nombre": "Prueba 2",
"hr_id_empresa": 14
},
"horarioDetalles": [
{
"hrd_id": 8,
"hrd_hr_id": 105,
"hrd_nombre": "Prueba prueba",
"hrd_dia_semana_ini": null,
"hrd_dia_mes_ini": null,
"hrd_mes_ini": null,
"hrd_anio_ini": null,
}
]
},
]
}
if you notice horarioHeader information is repeated I would like to map this array and get something like this
const dataFormated = [{
"horarioHeader": {
"hr_id": 105,
"hr_nombre": "Prueba 2",
"hr_id_empresa": 14,
},
"horarioDetalles": [
{
"hrd_id": 4,
"hrd_hr_id": 105,
"hrd_nombre": "Prueba detalle 2",
"hrd_dia_semana_ini": null,
"hrd_dia_mes_ini": null,
"hrd_mes_ini": null,
"hrd_anio_ini": null
},
{
"hrd_id": 5,
"hrd_hr_id": 105,
"hrd_nombre": "Prueba detalle 3",
"hrd_dia_semana_ini": null,
"hrd_dia_mes_ini": null,
"hrd_mes_ini": null,
"hrd_anio_ini": null
},
{
"hrd_id": 8,
"hrd_hr_id": 105,
"hrd_nombre": "Prueba prueba",
"hrd_dia_semana_ini": null,
"hrd_dia_mes_ini": null,
"hrd_mes_ini": null,
"hrd_anio_ini": null
}]
}];
I have been trying but I still haven't been able to get the correct algorithm, if anyone can help me here.
Here it's my function
const findDuplicates = (arr) => {
let results = [];
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i + 1].horarioHeader.hr_id === arr[i].horarioHeader[0].hr_id ) {
results.push({ horarioHeader:[{...arr[i].horarioHeader}], horarioDetalles:[...arr[i].horarioDetalles, ...arr[i + 1].horarioDetalles] });
}
else{
results.push({ horarioHeader:[{...arr[i].horarioHeader}], horarioDetalles:[...arr[i].horarioDetalles]});
}
}
return results;
}