前言 :两个数值的区间,可以放在数轴上看,其实就是4个点,只要找出最小点就很好判断了,
找出有最小点的区间,然后让该区间的最大值和另一个区间的最小点比较,如果大于该比较区间的最小点,那么说明有两种情况,
- 一是前者的最大值掉落在后者区间内
- 二是前者前者包含后者,这都属于有重叠的数值,返回true。
代码如下:
function isOverlap(a,b){
//判断最小值
if(a.minValue<b.minValue){
//a的开始范围是最小
if (a.maxValue>=b.minValue){
return true;
}else{
return false
}
}else if(a.minValue==b.minValue){
return true;
}else {
//b的开始范围是最小
if (b.maxValue>=a.minValue){
return true;
}else{
return false;
}
}
}
这是正向区间的情况,如[0,20],最大值肯定大于最小值,但是如果是反向区间,如[0,-20],就需要另外判断了。