Javascript - 检查数组中重叠的数字范围

Hul*_*991 -2 javascript arrays sorting range overlapping

我有一个带有开始和结束值的时间范围数组。

var timeRanges = [{
    start: 120,
    end: 140
},{
    start: 180,
    end: 220
},{
    start: 250,
    end: 300
}]
Run Code Online (Sandbox Code Playgroud)

需要检查选择的范围是否与时间范围重叠。而且选定的范围应该在 timeRange 间隔之间。(例如:140-180、220-250)

var selected = {
    start: 150,
    end: 170
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*lms 9

 const overlaps = timeRanges.some( range => 
  (range.start < selected.start && range.end > selected.start) || 
  (range.start < selected.end && range.end > selected.end) || 
  (range.start > selected.start && range.end < selected.end)
 );
Run Code Online (Sandbox Code Playgroud)


L.G*_*ger 6

时间间隔B“重叠”,A如果:

  • B在开始之后A但在A完成之前开始。
  • B开始前A开始,A开始后结束。

所以你可以写一个函数来决定它。

function areOverlapping(A, B) {
    if(B.start < A.start) {
        return B.finish > A.start;
    }
    else {
        return B.start < A.finish;
    }
}
Run Code Online (Sandbox Code Playgroud)