在我的应用程序中,我有一个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
]
您可以使用简单的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);
根据您的示例,您拥有的是开始日期列表,您可以迭代并找出结束日期。
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' } ]