Конвертировать историю дат в диапазоны дат в Javascript - PullRequest
0 голосов
/ 14 октября 2019

В моем приложении у меня есть таблица mysql, где я веду историю изменения цены. Я сопоставил даты из таблицы истории, и это выглядит так:

['09-16-2019','09-25-2019','10-10-2019',...n]

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

let ranges = [ 
        {start:'09-16-2019',end:'09-24-2019'},
        {start:'09-25-2019',end:'10-09-2019'}
        .,
        .,
        ..n
      ]

Ответы [ 2 ]

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

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

let x = ['09-16-2019','09-25-2019','10-10-2019']
let res = [];
for(let i = 0; i < x.length - 1; i++) {
    let start = x[i];
    let end = new Date(Date.parse(x[i+1]) - 86400000).toLocaleDateString("en",{year:"numeric",month:"numeric",day:"numeric"});
    res.push({start, end})
}

console.log(res); 
// [ { start: '09-16-2019', end: '9/24/2019' },  
// { start: '09-25-2019', end: '10/9/2019' } ]

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

Вы можете использовать простой Array.prototype.reduce() для создания объекта из данного массива dates, например:

let dates = ['09-16-2019', '09-25-2019', '10-10-2019', '18-10-2019'];

let ranges = dates.reduce((acc, val, i, arr) => {
  if (i !== 0) acc.push({
    start: arr[i - 1],
    end: val
  });
  return acc;
}, []);

console.log(ranges);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...