检查值是否在数字范围内

时间:2011-06-23 12:44:55

标签: javascript if-statement

我想检查某个值是否在可接受的范围内。如果是,做某事;否则,别的什么。

范围是0.001-0.009。我知道如何使用多个if来检查这一点,但我想知道是否有任何方法可以在一个if语句中检查它。

7 个答案:

答案 0 :(得分:165)

你问的是关于数字比较的问题,所以正则表达式实际上与问题无关。您不需要“多个if”语句来执行此操作:

if (x >= 0.001 && x <= 0.009) {
  // something
}

你可以自己写一个“between()”函数:

function between(x, min, max) {
  return x >= min && x <= max;
}
// ...
if (between(x, 0.001, 0.009)) {
  // something
}

答案 1 :(得分:20)

这是一个只有一个比较的选项。

// return true if in range, otherwise false
function inRange(x, min, max) {
    return ((x-min)*(x-max) <= 0);
}

console.log(inRange(5, 1, 10));     // true
console.log(inRange(-5, 1, 10));    // false
console.log(inRange(20, 1, 10));    // false

答案 2 :(得分:17)

如果你必须使用正则表达式(实际上,你不应该!)这将起作用:

/^0\.00([1-8]\d*|90*)$/

应该有效,即

    之前没有
  • ^
  • 后跟0.00(nb:.字符的反斜杠转义)
  • 后跟1到8,以及任意数量的附加数字
  • 或9,后跟任意数量的零
  • $:其他任何内容

答案 3 :(得分:8)

如果您已经在使用lodash,则可以使用inRange()函数: https://lodash.com/docs/4.17.15#inRange

_.inRange(3, 2, 4);
// => true

_.inRange(4, 8);
// => true

_.inRange(4, 2);
// => false

_.inRange(2, 2);
// => false

_.inRange(1.2, 2);
// => true

_.inRange(5.2, 4);
// => false

_.inRange(-3, -2, -6);
// => true

答案 4 :(得分:2)

我喜欢Pointy的between功能,所以我写了一个类似的功能,适用于我的场景。

/**
 * Checks if an integer is within ±x another integer.
 * @param {int} op - The integer in question
 * @param {int} target - The integer to compare to
 * @param {int} range - the range ±
 */
function nearInt(op, target, range) {
    return op < target + range && op > target - range;
}

所以,如果您想查看x是否在y的±10之内:

var x = 100;
var y = 115;
nearInt(x,y,10) = false

我用它来检测长按手机:

//make sure they haven't moved too much during long press.
if (!nearInt(Last.x,Start.x,5) || !nearInt(Last.y, Start.y,5)) clearTimeout(t);

答案 5 :(得分:0)

如果您希望代码选择特定的数字范围,请务必使用&&运算符代替||

&#13;
&#13;
if (x >= 4 && x <= 9) {
  // do something
} else {
  // do something else
}

// be sure not to do this

if (x >= 4 || x <= 9) {
  // do something
} else {
  // do something else
}
&#13;
&#13;
&#13;

答案 6 :(得分:0)

在编写条件之前,您必须先确定上下限

class MyObject
{
  public:
    enum
    {
        myFieldSize = sizeof(myField),
    };
  protected:
    uint8_t myField;
}