Не получается отфильтровать массив по диапазону дат на js
У меня есть 2 переменные, дата начала и дата конца. И мне нужно отфильтровать мой массив в данном диапазоне.
const startDate = "Sat May 07 2022 00:00:00 GMT+0300 (Москва, стандартное время)"
const endDate = "Tue May 10 2022 00:00:00 GMT+0300 (Москва, стандартное время)"
Массив который нужно отфильтровать
const allArr = ["Mon May 04 2022 17:35:27 GMT+0300 (Москва, стандартное время)", "Mon May 07 2022 17:49:18 GMT+0300 (Москва, стандартное время)", "Mon May 09 2022 17:49:25 GMT+0300 (Москва, стандартное время)", "Mon May 13 2022 17:49:33 GMT+0300 (Москва, стандартное время)", "Mon May 14 2022 17:49:43 GMT+0300 (Москва, стандартное время)"]
Пробовал сделать так, но это не работает:
allArr.filter((date) => {
date = new Date(date)
return date => new Date(startDate) && date <= new Date(endDate)
})
Ответы (1 шт):
Автор решения: 4500zenja
→ Ссылка
Результат работы функции filter() является массивом, т.е. его нужно куда-то сохранять после его применения. Исходный массив при этом не изменяется (да и не может, ибо const стоит), отсюда и отсутствие изменений.
const startDate = "Sat May 07 2022 00:00:00 GMT+0300 (Москва, стандартное время)"
const endDate = "Tue May 10 2022 00:00:00 GMT+0300 (Москва, стандартное время)"
const allArr = ["Mon May 04 2022 17:35:27 GMT+0300 (Москва, стандартное время)", "Mon May 07 2022 17:49:18 GMT+0300 (Москва, стандартное время)", "Mon May 09 2022 17:49:25 GMT+0300 (Москва, стандартное время)", "Mon May 13 2022 17:49:33 GMT+0300 (Москва, стандартное время)", "Mon May 14 2022 17:49:43 GMT+0300 (Москва, стандартное время)"]
const result = allArr.filter((date) => {
date = new Date(date)
return date >= new Date(startDate) && date <= new Date(endDate)
})
console.log(result)