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);