Skip to content

Instantly share code, notes, and snippets.

@tifidy
Created December 24, 2019 10:22
Show Gist options
  • Save tifidy/e169d5f7550a695964205f4374124d68 to your computer and use it in GitHub Desktop.
Save tifidy/e169d5f7550a695964205f4374124d68 to your computer and use it in GitHub Desktop.
(function($)
{
function mergeArr(arr) {
// Sort the array in descending order
arr.sort(function(a, b) {
return b.start - a.start;
});
for (var i = arr.length - 1; i > 0; i--) {
if (arr[i].end == arr[i - 1].start) {
arr[i].end = arr[i - 1].end;
arr.splice(i - 1, 1);
}
else if(arr[i - 1].start > arr[i].start && arr[i - 1].start < arr[i].end)
{
if(arr[i - 1].end > arr[i].end)
{
arr[i].end = arr[i - 1].end;
}
arr.splice(i - 1, 1);
}
}
// Sort it again in reverse order.
return arr.sort(function(a, b) {
return a.start - b.start;
});
}
function convertToUnixTimestamp(times)
{
var arr = [];
for (var i = 0; i < times.length ; i++) {
arr.push(
{
start:moment(times[i].start, "HH:mm").unix(),
end:moment(times[i].end, "HH:mm").unix()
}
);
}
return arr;
}
function convertUnixToTime(times)
{
var arr = [];
for (var i = 0; i < times.length ; i++) {
arr.push(
{
start:moment.unix(times[i].start).format("HH:mm"),
end:moment.unix(times[i].end).format("HH:mm")
}
);
}
return arr;
}
var times = [
{start: "21:00", end: "03:00"},
{start: "04:00",end: "06:00"},
{start: "19:45", end: "21:00"},
{start: "21:00", end: "00:00"},
];
var threeTime = convertToUnixTimestamp(times);
var mergedTimesUnix = mergeArr(threeTime);
var mergedTimes = convertUnixToTime(mergedTimesUnix);
console.log(mergedTimes)
/*var threeTime = [
{start: 946688400, end: 946695600}, //1-3
{start: 946695600,end: 946702800}, //3-5
{start: 946706400, end: 946749600}, //6-18
{start: 946738800, end: 946767600}, //15-23
];
*/
//console.log(mergeArr(threeTime));
//console.log(mergeArr(threeTime));
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment