检查整数是否在其中一个范围内

时间:2016-10-28 10:42:23

标签: javascript

不要再投票了。这不是一个重复的问题。

我有一个2D数组,其中包含三个范围:

ranges = [
           [1,4],
           [6,10],
           [15,20]
          ]

我想检查一个数字是否在其中一个范围内。

例如,7为真,因为它在[6,10]

范围内

我试着用这种方式写作:

if ( (num >= ranges[0][0] && num =< ranges[0][1]) || 
     (num >= ranges[1][0] && num =< ranges[1][1]) || 
      (num >= ranges[2][0] && num =< ranges[2][1])) {
   return True;
}
else {
   return false;
}

我有两个问题:

(1)有没有更快的方法而不是写这个笨拙的代码?

(2)如果范围数组的大小未知(不固定),我该如何查看数字?

4 个答案:

答案 0 :(得分:6)

您可以使用Array#some并检查间隔。

  

glBindBuffer(GL_ARRAY_BUFFER,_vboID); //Buffering the data glBufferData(GL_ARRAY_BUFFER,_vboDATA[type].size()*sizeof(vboData),nullptr,GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER,0,_vboDATA[type].size()*sizeof(vboData),_vboDATA[type].data()); glBindBuffer(GL_ARRAY_BUFFER,0); 方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

some()

答案 1 :(得分:1)

您可以尝试这样的事情:

var isInsideAllRanges = ranges.some(function(range){
    return num>=range[0] && num<=range[1];
}); 

var ranges = [
           [1,4],
           [6,10],
           [15,20]
          ];

var num = 7;

var isInsideAllRanges = ranges.some(function(range){
        return num>=range[0] && num<=range[1];
});

console.log(isInsideAllRanges);

some方法:

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。

有关详细信息,请查看Array.prototype.some()

答案 2 :(得分:1)

另一种解决方案是使用mapreduce

var ranges = [
       [1,4],
       [6,10],
       [15,20]
];

function check(number) {
    return ranges.map(function(n){
        return number >= n[0] && number <= n[1];       
    }).reduce(function(a, b){
        return a || b
    }, false);
}

console.log("1: " + check(1));
console.log("5: " + check(5));
console.log("7: " + check(7));

答案 3 :(得分:0)

&#13;
&#13;
ranges = [
  [1, 4],
  [6, 10],
  [15, 20]
]

function inRange(n) {
  for (var i = 0; i < ranges.length; i++) {
    if (n >= ranges[i][0] && n <= ranges[i][1]) {
      return true;
    }
  }
  return false;
}
console.log(inRange(16),inRange(12),inRange(21))
&#13;
&#13;
&#13;