var result_database = [ { id: 49, absentName: 'man1', absentday: 1 }, { id: 50, absentName: 'man2', absentday: 1 }, { id: 49, absentName: 'man1', absentday: 2 }, { id: 50, absentName: 'man2', absentday: 2 }, { id: 49, absentName: 'man1', absentday: 3 }, { id: 51, absentName: 'man3', absentday: 3 }, { id: 51, absentName: 'man3', absentday: 4 }, { id: 50, absentName: 'man2', absentday: 3 } ] Entonces, absent_date y absent_days devolverán el valor del día actual, que para el lunes es 1.
const absent_date = new Date(); const absent_days = absent_date.getDay();El resto:
let absent_remove = result_database.filter(item => item.absentday != absent_days); const absent_duplicate = [...new Map(absent_remove.map(item => [item.id, item])).values()] console.log("Absent Result", absent_duplicate); Básicamente, absent_remove elimina la fila de la base de datos si absentday coincide con absent_days . Luego obtengo un montón de duplicados que resuelvo con absent_duplicate, eliminando los duplicados. Me quedo con estos resultados abajo.
Absent Result [ { id: 49, absentName: 'man1', absentday: 3 }, { id: 50, absentName: 'man2', absentday: 3 }, { id: 51, absentName: 'man3', absentday: 4 } ]Man1 y Man2 están ausentes el lunes (1), pero todavía están en la consulta, la pregunta es, ¿cómo los elimino? El resultado final debería ser man3 solo.
Prueba esto:
res = [ { id: 49, absentName: 'man1', absentday: 1 }, { id: 50, absentName: 'man2', absentday: 1 }, { id: 49, absentName: 'man1', absentday: 2 }, { id: 50, absentName: 'man2', absentday: 2 }, { id: 49, absentName: 'man1', absentday: 3 }, { id: 51, absentName: 'man3', absentday: 3 }, { id: 51, absentName: 'man3', absentday: 4 }, { id: 50, absentName: 'man2', absentday: 3 } ] answer = res.filter(x => !res.find(y => x.id == y.id && y.absentday == 1)) console.log(answer)Para cada entrada en su resultado, solo lo conservamos si no hay otras entradas con un día ausente de '1'.