JSFiddle - React, Tailwind, and code Playground
by kentaromiura
JavaScript
function zip(ranges){
ranges.sort(function(a, b){
if (a[0] < b[0]) return -1
if (a[0] > b[0]) return 1
return 0
})
return ranges.slice(1).reduce(function(prev, curr){
var last = prev[prev.length-1];
if (last[1] >= curr[0]){
if(last[1] <= curr[1]){
prev.splice(prev.length-1, 1, [last[0], curr[1]])
}
} else {
prev.push(curr)
}
return prev
}, [ranges[0]])
}
console.log(zip([[0,3], [1,2], [2,4], [5,6]]))
console.log(zip([[1,3], [3,4], [5,6], [6,7]]))
console.log(zip([[5,6], [6,7], [1,3], [3,4]]))