Вы можете фильтровать, проверяя диапазон.Результат содержит только диапазоны, которые перекрывают данный диапазон.
var ranges = [
{ id: 1, start: 5, end: 8 },
{ id: 2, start: 4, end: 6 },
{ id: 3, start: 7, end: 9 },
{ id: 4, start: 6, end: 7 },
{ id: 5, start: 4, end: 9},
{ id: 6, start: 1, end: 2, out: true },
{ id: 7, start: 11, end: 12, out: true },
{ id: 8, start: 1, end: 5, out: true },
{ id: 9, start: 8, end: 10, out: true },
{ id: 10, start: 5, end: 6 },
{ id: 11, start: 7, end: 8 },
{ id: 12, start: 5, end: 8 },
{ id: 13, start: 5, end: 10 },
{ id: 14, start: 4, end: 8 },
],
start = 5,
end = 8,
overlapping = ranges.filter(o => o.end > start && o.start < end);
console.log(overlapping);
.as-console-wrapper { max-height: 100% !important; top: 0; }