Как проверить на конкретную дату в массиве - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь сделать некоторую обработку ошибок в существующей системе. Бэкэнд не может быть изменен, так как он работает с несколькими системами. Я работаю над переносом веб-интерфейса из ASP.NET в React. Я столкнулся с проблемой, когда я хочу проверить, содержит ли массив объектов дату, но дата, полученная из серверной части, выглядит как /Date(1379282400000)/.

Я провел несколько поискови не могу найти что-то похожее на это. Я попробовал этот код:

if (data.some(e => new Date(parseInt(e.Date.substr(6))).toDateString() === this.state.date.toDateString()) {
  // Logic
}

e.Date - это ключ, используемый в объекте для дат, а this.state.date - это дата, выбранная пользователем. Если я просто сделаю:

if (data.some(e => e.Date === "/Date(137982400000)/") {
  // Logic
}

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

Было бы неплохо исправить, что она проверяет дату как .getTime() не будет работать, так как это может быть одна и та же дата, но в разное время.

1 Ответ

0 голосов
/ 22 октября 2019

Итак, выяснилось, что проблема возникла из-за попытки преобразовать DateTime из бэкэнда в функцию .some(), но я смог ее решить.

Сначала я создаю новый массив, содержащий толькодата, как это было то, что мне нужно для проверки:

const dateConvertion = data.map(function(elem) {
  return {
    date: new Date(parseInt(elem.Date.substr(6))).toDateString()
  };
});

Затем я создал обработку ошибок:

if (dateConvertion.some(e => e.date === this.state.date) {
  // Error Handling
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...