Как сделать фильтрацию по датам?
Всем привет, подскажите, пожалуйста, как правильно решить следующую задачу. У меня приходит массив объектов с датами. И есть дата с которой с нужно отфильтровать даты. Например, за 6 месяцев, за 3 месяца, за 3 года и т.д.
Данные: const chartPoints = [ { "date": "2017-01-31", "value": "-0.00014500" }, { "date": "2017-10-31", "value": "0.00017500" }, { "date": "2017-11-30", "value": "0.00001600" }, { "date": "2017-12-31", "value": "-0.00015100" }, { "date": "2018-01-31", "value": "-0.00025600" }, { "date": "2018-02-28", "value": "-0.00004400" }, { "date": "2018-12-30", "value": "-0.00760294" }, { "date": "2019-01-13", "value": "-0.00161975" }, { "date": "2019-01-14", "value": "0.00031716" }, { "date": "2019-01-15", "value": "-0.00085519" }, { "date": "2019-01-16", "value": "-0.00729198" }, { "date": "2019-01-17", "value": "0.00209954" }, { "date": "2019-01-18", "value": "-0.00397498" }, { "date": "2019-01-19", "value": "0.00399084" }, { "date": "2019-01-20", "value": "-0.00397498" }, { "date": "2019-01-21", "value": "0.00050778" }, { "date": "2019-01-22", "value": "0.00152410" }, { "date": "2019-01-23", "value": "-0.00309089" }, { "date": "2019-01-24", "value": "-0.00503519" }, { "date": "2019-01-25", "value": "0.00330404" }, { "date": "2019-01-26", "value": "-0.00329316" }, { "date": "2019-01-27", "value": "0.00330404" }, { "date": "2019-01-28", "value": "0.00125198" }, { "date": "2019-01-29", "value": "0.00044354" }, { "date": "2019-01-30", "value": "-0.00207310" }, { "date": "2019-01-31", "value": "-0.00754435" }, { "date": "2019-02-01", "value": "0.00194727" }, { "date": "2019-02-02", "value": "-0.00194349" }, { "date": "2019-02-03", "value": "0.00194727" }, { "date": "2019-02-04", "value": "0.00170766" }, { "date": "2019-02-05", "value": "-0.00189959" }, { "date": "2019-02-06", "value": "0.00590438" }, { "date": "2019-02-07", "value": "0.00096211" }, { "date": "2019-02-08", "value": "-0.00197908" }, { "date": "2019-02-09", "value": "0.00163139" }, { "date": "2019-02-10", "value": "-0.00162874" }, { "date": "2019-02-11", "value": "-0.00181984" }, { "date": "2019-02-12", "value": "-0.00115103" }, { "date": "2019-02-13", "value": "0.00206837" }, { "date": "2019-02-14", "value": "0.01649665" }, { "date": "2019-02-15", "value": "-0.00452178" }, { "date": "2019-02-16", "value": "0.00454231" }, { "date": "2019-02-17", "value": "-0.00452178" }, { "date": "2019-02-18", "value": "0.00220610" }, { "date": "2019-02-19", "value": "-0.00696247" }, { "date": "2019-02-20", "value": "-0.00635345" }, { "date": "2019-02-21", "value": "-0.00417836" }, { "date": "2019-02-22", "value": "-0.00008116" }, { "date": "2019-02-23", "value": "0.00008116" }, { "date": "2019-02-24", "value": "-0.00008116" }, { "date": "2019-02-25", "value": "0.00017887" }, { "date": "2019-02-26", "value": "0.00491361" }, { "date": "2019-02-27", "value": "0.00275353" }, { "date": "2019-02-28", "value": "0.00003222" }, { "date": "2019-03-01", "value": "-0.00069352" }, { "date": "2019-03-02", "value": "0.00069399" }, { "date": "2019-03-03", "value": "-0.00069352" }, { "date": "2019-03-04", "value": "-0.00014531" }, { "date": "2019-03-05", "value": "0.00138064" }, { "date": "2019-03-06", "value": "0.00295905" }, { "date": "2019-03-07", "value": "0.00162388" }, { "date": "2019-03-08", "value": "-0.00205576" } { "date": "2019-09-04", "value": "-0.01084281" } ] Начиная с указанной даты и до конца. "startDate": "2019-01-16" |
Если нужно всё с определённой даты...
const startDate = new Date("2019-01-16"); const filteredPoints = chartPoints.filter(({ date }) => startDate <= new Date(date)); Если нужно всё с определённой даты на протяжении (например 3-ёх месяцев)... const DAY = 24 * 3600 * 1000; const MONTH = 30 * DAY; const YEAR = 365.2425 * DAY; const startDate = new Date("2019-01-16"); const endDate = new Date(+startDate + 3 * MONTH); const filteredPoints = chartPoints.filter(({ date }) => { const d = new Date(date); return startDate <= d && d < endDate; }); Также вы можете указать конкретную дату окончания. |
Большое спасибо.
|
Часовой пояс GMT +3, время: 21:23. |