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 }
]
Итак, absent_date и absent_days должны возвращать значение текущего дня, которое для понедельника равно 1.
const absent_date = new Date();
const absent_days = absent_date.getDay();
Остальное:
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.info("Absent Result", absent_duplicate);
Таким образом, absent_remove удаляет строку базы данных, если absentday соответствует absent_days. Затем я получаю кучу дубликатов, которые я решаю с помощью Absent_duplicate, удаляя дубликаты. Я остался с этими результатами внизу.
Absent Result [
{ id: 49, absentName: 'man1', absentday: 3 },
{ id: 50, absentName: 'man2', absentday: 3 },
{ id: 51, absentName: 'man3', absentday: 4 }
]
Man1 и Man2 оба отсутствуют в понедельник (1), но они все еще в запросе, вопрос, как их вывести? Конечным результатом должен быть только man3.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуй это:
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.info(answer)Для каждой записи в вашем результате мы сохраняем ее только в том случае, если нет других записей с отсутствующим днем «1».
Вы используете те же данные для result_database? Возможно, нет записей, соответствующих критериям.
Да, я знаю. Это буквальная копия базы данных. Не уверен, что это может быть мое утверждение, но я сомневаюсь, что это так. «ВЫБЕРИТЕ идентификатор, developer.absentName, AbsentDay FROM разработчиков, отсутствует WHERE AbsentName=developers.absentName» Обновлено: если я удалю ! от res.find я получаю свои результаты, но я вернусь на круги своя.
Неважно!!! Это работает, большое спасибо. Кажется, все мои значения БД были в Absentday = 1, что означает, что все они исключены из запроса, поэтому это не дало мне результатов.
Это работает в браузере, но отображает пустой массив, когда я использую терминал в коде VS. Absent_remove = result_database.filter(item1 => !result_database.find(item2 => item1.id == item2.id && item2.absentday == Absent_days)) const Absent_duplicate = [...новая карта(absent_remove.map(item = > [JSON.stringify(item.id), item])).values()] console.info(absent_duplicate)