var dates1 = [new Date('2021-4-21'), new Date('2021-4-24')];
var dates2 = [new Date('2021-4-25'), new Date('2021-4-26')];
function overlaps(a, b) {
return (b[0] >= a[0] && b[0] <= a[1]) || // b start in a
(b[1] >= a[0] && b[1] <= a[1]) || // b end in a
(b[0] <= a[0] && b[1] >= a[1]); // b encloses a
}
console.log(overlaps(dates1, dates2));
Сергей Зенькович, Как-то чересчур сложно условие записано, оно легко приводится к a[0] <= b[1] && a[1] <= b[0]
К тому же, при пересечении интервалов оно выдаёт true, а не false, как в вашем вопросе.