前言 :兩個數值的區間,可以放在數軸上看,其實就是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],就需要另外判斷了。