Как сделать фильтр даты, а также другие фильтры в lodash - PullRequest
0 голосов
/ 31 марта 2020

У меня есть массив объектов и некоторые фильтры, такие как фильтр по имени, проекту и фазе. Каждый раз, когда пользователь выбирает значение из раскрывающегося списка, я сохраняю это значение в состоянии, а в состоянии я использую фильтры для фильтрации. массив данных, который работает нормально.

Теперь я добавил еще два фильтра fromDate и toDate, в которых также хранится выбранная дата в состоянии и из состояния, в котором я использую фильтр loda sh для фильтрации данных между двумя даты

this.entries = filter(val.datas, (data) => {
  return data.date >= filteredKey.fromDate && data.date <= filteredKey.toDate;
});

Оба фильтра отлично работают по отдельности, но я попытался дать условие, как показано ниже

  if (
        this.selectedProject === 'all' &&
        this.selectedPhase === 'all' &&
        this.selectedUser === 'all' &&
        this.fromDate === '' &&
        this.toDate === ''
      ) {
        this.entries = val.datas;
      } else {
        const filteredKey = omitBy(val.filters, (data) => data === 'all' || data === '');
        if (filteredKey.fromDate && filteredKey.toDate) {
          this.entries = filter(val.datas, (data) => {
            return data.date >= filteredKey.fromDate && data.date <= filteredKey.toDate;
          });
        } else {
          this.entries = filter(val.datas, filteredKey);
        }
      }

Теперь, когда пользователь выбирает все фильтры, как я могу отфильтровать даты как а также другие фильтры

{
  "datas": [
    {
      "id": 1,
      "key": "-M3W4y3sZRxdUCi3N_Vn",
      "date": "2020-03-28",
      "name": "smrithi",
      "phase": "phase 2 ",
      "project": "UNICORN",
      "seconds": "01:00",
      "task": "working...",
      "uid": "G2gqEbdQzpcX7OdTZLFYflQrgjN2",
      "workFrom": "Office"
    },
    {
      "id": 2,
      "key": "-M3WDDlCxSefdNiIYrz0",
      "date": "2020-03-30",
      "name": "smrithi",
      "phase": "phase 001 ",
      "project": "ANGRY BIRDS",
      "seconds": "03:45",
      "task": "edited",
      "uid": "G2gqEbdQzpcX7OdTZLFYflQrgjN2",
      "workFrom": "Office"
    },
    {
      "id": 3,
      "key": "-M3WI93d7HUlxTT3YfO8",
      "date": "2020-03-28",
      "name": "mee",
      "phase": "phase 3",
      "project": "Mojo Jojo",
      "seconds": "11:03",
      "task": "omg...",
      "uid": "mvtZw2vSmvUYmD2WRvRtSNKpCUi2",
      "workFrom": "Office"
    },
    {
      "id": 4,
      "key": "-M3fM6xMwtrr7R2k4EK9",
      "date": "2020-03-30",
      "name": "smrithi",
      "phase": "Design",
      "project": "The Mask",
      "seconds": "03:00",
      "task": "abcd",
      "uid": "G2gqEbdQzpcX7OdTZLFYflQrgjN2",
      "workFrom": "Office"
    },
    {
      "id": 5,
      "key": "-M3fMG44m-NThytsZwhk",
      "date": "2020-03-30",
      "name": "smrithi",
      "phase": "phase 2 ",
      "project": "Pigs",
      "seconds": "02:01",
      "task": "sdfghnm",
      "uid": "G2gqEbdQzpcX7OdTZLFYflQrgjN2",
      "workFrom": "Home"
    },
    {
      "id": 6,
      "key": "-M3fMqKRr3fZFZbtw5bF",
      "date": "2020-03-30",
      "name": "smrithi",
      "phase": "phase 001 ",
      "project": "FLINTSTONES",
      "seconds": "01:01",
      "task": "ihgv",
      "uid": "G2gqEbdQzpcX7OdTZLFYflQrgjN2",
      "workFrom": "Office"
    }
  ],
  "filters": {
    "project": "all",
    "phase": "all",
    "name": "all",
    "fromDate": "",
    "toDate": ""
  }
}
...