最近遇到一个需求,用户输入两组区间值,需要判断是否存在重叠情况,在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);
}
在实际应用中,可能还需要考虑区间是否开放(包含端点)或封闭(不包含端点),以及如何处理精确相等的开始或结束点