Проблема с удалением строк с .filter JS

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.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

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».

Это работает в браузере, но отображает пустой массив, когда я использую терминал в коде 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)

Wake 09.05.2022 12:26

Вы используете те же данные для result_database? Возможно, нет записей, соответствующих критериям.

Schokokuchen Bäcker 09.05.2022 12:33

Да, я знаю. Это буквальная копия базы данных. Не уверен, что это может быть мое утверждение, но я сомневаюсь, что это так. «ВЫБЕРИТЕ идентификатор, developer.absentName, AbsentDay FROM разработчиков, отсутствует WHERE AbsentName=developers.absentName» Обновлено: если я удалю ! от res.find я получаю свои результаты, но я вернусь на круги своя.

Wake 09.05.2022 13:20

Неважно!!! Это работает, большое спасибо. Кажется, все мои значения БД были в Absentday = 1, что означает, что все они исключены из запроса, поэтому это не дало мне результатов.

Wake 09.05.2022 13:26

Другие вопросы по теме