Javascript 检查值是否在数字范围内
我想检查一个值是否在可接受的范围内。如果是,做某事;否则,还有别的Javascript 检查值是否在数字范围内,javascript,if-statement,Javascript,If Statement,我想检查一个值是否在可接受的范围内。如果是,做某事;否则,还有别的 范围为0.001-0.009。我知道如何使用多个if来检查这一点,但我想知道是否有任何方法可以在单个if语句中检查它。您问的是一个关于数值比较的问题,因此正则表达式与此问题毫无关系。您不需要使用“多个if”语句来执行此操作,或者: if (x >= 0.001 && x <= 0.009) { // something } 如果(x>=0.001&&x=min&&x如果您必须使用regexp(实
范围为
0.001-0.009
。我知道如何使用多个if
来检查这一点,但我想知道是否有任何方法可以在单个if
语句中检查它。您问的是一个关于数值比较的问题,因此正则表达式与此问题毫无关系。您不需要使用“多个if
”语句来执行此操作,或者:
if (x >= 0.001 && x <= 0.009) {
// something
}
如果(x>=0.001&&x=min&&x如果您必须使用regexp(实际上,您不应该这么做!),这将起作用:
/^0\.00([1-8]\d*|90*)$/
应该有效,即
^
之前什么都没有
- 后跟
0.00
(注意:
字符的反斜杠转义)
- 后跟1到8,以及任意数量的附加数字
- 或9,后跟任意数量的零
$
:后面没有其他内容
我喜欢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;
}
我用它来检测手机上的长按:
//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);
这里有一个选项,只有一个比较
// 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
//如果在范围内,则返回true,否则返回false
范围内的函数(x,最小值,最大值){
return((x-min)*(x-max)如果希望代码选择特定范围的数字,请确保使用&&
运算符而不是|
如果(x>=4&&x=4 | | x您必须在写入条件之前确定下限和上限
function between(value,first,last) {
let lower = Math.min(first,last) , upper = Math.max(first,last);
return value >= lower && value <= upper ;
}
介于(值、第一个、最后一个)之间的函数{
让lower=Math.min(first,last),upper=Math.max(first,last);
返回值>=lower&&value如果您已经在使用lodash
,则可以使用inRange()
函数:
\范围(3,2,4);
//=>正确
_.范围(4,8);
//=>正确
_.范围(4,2);
//=>错误
_.范围(2,2);
//=>错误
_.范围(1.2,2);
//=>正确
_.范围(5.2,4);
//=>错误
_.in范围(-3,-2,-6);
//=>正确
&&
操作员?…您的编码很好,但它不符合问题,仅此而已。无意冒犯。我总是根据解决方案回答问题的好坏来判断解决方案。这是因为我通常假设人们知道他们在问什么。复选标记显示,这个提问者的情况并非如此。好吧,我很感激您所说的g、 但我建议,你可能需要重新考虑这样一个前提,即这里的人们通常“知道他们想要什么”从狭义上讲,这可能是正确的,但这些问题通常反映出一些糟糕的设计决策,应该重新考虑。我已经回答编程问题30年了,所以我已经见过很多次了。当然,我更喜欢更好的问题,其中总的目标得到了明确的解释。在这里,我们真的不知道t他解释了这个问题的原因,所以我们没有上下文。我喜欢使用这样的语法:if(0.001这很好,不管最小值是更低还是最大值更低,它仍然可以工作。事实上,最好叫最小值,最大值,比如开始,结束。非常好的算法,谢谢!有人能不能考虑一下时间复杂度!?我会选择接受的解决方案,因为在Θ(2)处有两个比较比O(4)上的一个比较和三个算术运算要好。我从来没有声称它是你想象的那样。尽管如此,这是一个可行的选择。这有点愚蠢,它不仅可能较慢,而且对于代码的作用也不太明显
// 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
function between(value,first,last) {
let lower = Math.min(first,last) , upper = Math.max(first,last);
return value >= lower && value <= upper ;
}