recursive consecutive days
by aubz88
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
JavaScript
var input = [
'2018-06-11',
'2018-06-12',
'2018-06-15',
'2018-06-16',
'2018-06-17',
'2018-06-19'
];
var expectedOutput = [{
start: '2018-06-11',
end: '2018-06-12'
},
{
start: '2018-06-15',
end: '2018-06-17'
},
{
start: '2018-06-19',
end: '2018-06-19'
}
];
var series = [];
function isConsecutiveDay(currentDay, nextDay) {
var a = moment(currentDay, 'YYYY-MM-DD');
var b = moment(nextDay, 'YYYY-MM-DD');
return a.diff(b, 'days') === 1;
}
function extractConsecutiveDays(input, index) {
if (input == null || input.length === 0) {
return;
}
if(isConsecutiveDay(input[index], input[index + 1])) {
return extractConsecutiveDays(input, index + 1);
}
var obj = {
start: input[0],
end: input[index]
};
input.splice(0, index);
return obj;
}
var result = extractConsecutiveDays(input, 0);
console.log(result);