как найти значение в массиве reactjs - PullRequest
0 голосов
/ 31 марта 2020

У меня есть список дат, отправленных бэкэндом. Мне нужно поработать над этим списком, чтобы проверить. Если в списке есть даты марта, мне нужно отобразить события марта, а если в списке есть даты апреля, мне нужно отобразить события апреля и т. Д.

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

В моем коде, который я предоставляю ниже, events.date будет временем, чтобы проверить, есть ли событие в марте в списке .

список:

0: "2020-03-25"
1: "2020-03-26"
2: "2020-03-27"
3: "2020-03-28"
4: "2020-03-29"
5: "2020-03-30"
6: "2020-03-31"
7: "2020-04-01"
8: "2020-04-02"
9: "2020-04-13"
10: "2020-05-16"
11: "2020-06-27"

код:

{
  !events ? (
    <Loading />
  ) : events.date === 0 ? (
    []
  ) : (
    <>
      <h1>Eventos de Março</h1>
      <Month events={events} />
    </>
  );
}

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

Попробуйте что-то вроде


const datearr=events.map(dates=>{
  let date = new Date(dates);
  let monthno = date.getMonth();
  if( monthno===2 ){
   return date.getDay()
}

})
0 голосов
/ 01 апреля 2020

Чтобы эффективно справиться с этим, нам понадобятся пользовательские функции. Попробуйте это:

/* @param: month (type: number, range: 1-12)
 * @returns: boolean (true/false)
 */
const EventDates = (month) => {
  return ListOfDates.map(
    // generate list of months
    i => { let d = new Date(i); return d.getMonth() + 1; }
  ).includes(month); // check if a given month exists
};

console.log(EventDates(4))
// true
console.log(EventDates(1))
// false

Затем вы можете поместить это в jsx код:

-  ) : events.date === 0 ? (
//  replace with
+  ) : EventDates(month) ? (
// Either utilize `state` or `props` to change "month" parameter
0 голосов
/ 31 марта 2020

Вы можете использовать редуктор, чтобы получить список текущих месяцев. а затем проверить, нужен ли вам месяц.

["2020-03-25",
"2020-03-26",
"2020-03-27",
"2020-03-28",
"2020-03-29",
"2020-03-30",
"2020-03-31",
"2020-04-01",
"2020-04-02",
"2020-04-13",
"2020-05-16",
"2020-06-27"].reduce(function (a, b) {
    const d = new Date(b);
    if (a.indexOf(d.getMonth() + 1) === -1) {
        a.push(d.getMonth() + 1);
    }
    return a;
}, []).indexOf(4) !== -1; // <-- checking if April (4th month) is here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...