最简单的方法来检查Javascript变量的值是否在几个范围之间?

时间:2015-10-05 11:37:26

标签: javascript if-statement

如果一个数字应该针对几个值范围进行测试,则可行:

if ((number > a && number < b)||(number > b && number < d))
    {return true;}
    else {return false;}

这仅适用于2个范围, 但如果有很多范围的值,那就不太方便了。

这里有其他选择吗?

5 个答案:

答案 0 :(得分:1)

另一种方法:在数组中保存范围并像这样在循环中检查

var ranges = [[a,b],[c,d]]

var inRange = ranges.some(function(el){ return number > el[0] && number < el[1]})

这里使用Array.some函数,但它可以很容易地改为简单循环。

function checkRange(ranges, value){
    for(var i=0, len=ranges.length; i<len; i++){
        if(value > ranges[0] && value < ranges[1]) return true;
    }
    return false;
}

并将其称为checkRange(ranges, number)

答案 1 :(得分:0)

创建一个函数:

function isBetween(number, low, high) {
    return number > low && number < high;
}

然后轻松测试:

return (isBetween(number, a, b) || isBetween(number, b, d))

请注意,您不需要在if-statement的分支中返回值,只需返回条件值。

答案 2 :(得分:0)

编写几个简单的函数,你就完成了。

function inRangeInclusive(num, min, max) {
   return num >= min && num <= max;
}

function inRangeExclusive(num, min, max) {
   return num > min && num < max;
}

答案 3 :(得分:0)

let between = (n, n1, n2) => { return n >= n1 && n <= n2; }                                                                                                         

let inRanges = (num, ranges) => {                                                                                                                                   
  for (let range of ranges) {                                                                                                                                       
    if (between(num, range[0], range[1])) return true;                                                                                                              
  }                                                                                                                                                                 
  return false;                                                                                                                                                     
}                                                                                                                                                                   

console.log(inRanges(4, [[1,2], [5,10], [5, 6]]));                                                                                                                  

答案 4 :(得分:-1)

您可以使用switch语句,例如:

switch (number) {
case (number > a && number < b):
case (number > b && number < d):
    return true;
default:
    return false;
}