Tengo una serie de objetos como este:
const array = [ { dates: [ { date: "01", test: "FO", }, { date: "07", test: "AB", }, ], login: "TESTE.TESTE", }, { dates: [ { date: "02", test: "AB", }, { date: "04", test: "FO", }, ], login: "TESTE.TESTE", }, ];Y quiero que quede así:
const array = [ { dates: [ { date: "01", test: "FO", }, { date: "02", test: "AB", }, { date: "04", test: "FO", }, { date: "07", test: "AB", }, ], login: "TESTE.TESTE", }, ];Básicamente, quiero concatenar los objetos con la misma propiedad de 'inicio de sesión', y concatenar su matriz de 'fechas' y luego llenarla con los días que faltan, como: 01, 02, 03.... 31
Como se sugiere en los comentarios, solo una simple reduce con push condicional.
const array = [ { dates: [{ date: "01", test: "FO" }, { date: "07", test: "AB" }], login: "TESTE.TESTE" }, { dates: [{ date: "02", test: "AB" }, { date: "04", test: "FO" }], login: "TESTE.TESTE" } ]; const result = array.reduce((res, curr) => { const found = res.find(el => el.login === curr.login); if (found) { found.dates.push(...curr.dates); } else { res.push(curr); } return res; }, []); console.log(result);