var merge = function (intervals) {
intervals.sort(([aStart, aEnd], [bStart, bEnd]) =>
aStart !== bStart ? aStart - bStart : aEnd - bEnd
);
return mergerInterval(intervals);
};
const mergerInterval = (intervals, merged = []) => {
let prev = intervals.shift();
for (const curr of intervals) {
const [prevStart, prevEnd] = prev;
const [currStart, currEnd] = curr;
const hasOverlap = currStart <= prevEnd;
if (hasOverlap) {
prev[1] = Math.max(prev[1], curr[1]);
continue;
}
merged.push(prev);
prev = curr;
}
return [...merged, prev];
};