js 判断两个区间数组是否有重叠

121 阅读1分钟

最近遇到一个需求,用户输入两组区间值,需要判断是否存在重叠情况,在JavaScript中,这些区间通常以数组的形式表示,例如[start, end]。要判断两个区间是否重叠,我们需要比较它们的起始点和结束点。

用数学不等式表示

(interval1.start <= interval2.end) && (interval1.end >= interval2.start)

例子:

const arr1=[2,8]
const arr2=[3,5]
console.log(hasOverlap(arr1,arr2)) //true

function hasOverlap(arr1: number[], arr2: number[]) {
    const min = [Math.min(...arr1), Math.min(...arr2)];
    const max = [Math.max(...arr1), Math.max(...arr2)];
    return Math.max(...min) <= Math.min(...max);
}

在实际应用中,可能还需要考虑区间是否开放(包含端点)或封闭(不包含端点),以及如何处理精确相等的开始或结束点