Merging meeting Times
by Vatsal Pande
JavaScript
( function () {
function getCondensedRanges (array) {
var condensedRanges = [];
if(Array.isArray(array) && array.length >0) {
if (array.length >1) {
var startTimeMin = array[0].startTime;
var endTimeMax = array[0].endTime;
for(var i=1; i<array.length; i++) {
if (array[i].startTime-endTimeMax >1) {
condensedRanges.push({
startTime:startTimeMin,
endTime: endTimeMax
});
startTimeMin = array[i].startTime;
endTimeMax = array[i].endTime;
}else {
startTimeMin = Math.min (startTimeMin, array[i].startTime);
endTimeMax = Math.max (endTimeMax, array[i].endTime);
if (i === array.length-1 ){
condensedRanges.push({
startTime: startTimeMin,
endTime: endTimeMax
});
}
}
}
}else {
condensedRanges.push(array[0]);
}
}
return condensedRanges;
}
var meetings = [
{startTime: 0, endTime: 1},
{startTime: 3, endTime: 5},
{startTime: 4, endTime: 8},
{startTime: 10, endTime: 12},
{startTime: 9, endTime: 10},
];
var meetings_edgeCase1 = [{startTime: 1, endTime: 2}, {startTime: 2, endTime: 3}]
var meetings_edgeCase2 = [{startTime: 1, endTime: 5}, {startTime: 2, endTime: 3}];
var meetings_edgeCase3 = [
{startTime: 1, endTime: 10},
{startTime: 2, endTime: 6},
{startTime: 3, endTime: 5},
{startTime: 7, endTime: 9},
];
var meetings_edgeCase4 = [{startTime: 1, endTime: 3}, {startTime: 2, endTime: 4}];
var...