如果值在两个数字之间

我希望能够测试一个值是否在数字范围内。 这是我的jQuery代码……

if ((year  1990)){ return 'good stuff'; } 

在jQuery中有更简单的方法吗? 例如,有这样的东西……

 if (1990 < year < 2099){ return 'good stuff'; } 

在许多语言中,第二种方式将根据您的需要从左到右进行不正确的评估。

例如,在C中, 1990 < year将评估为0或1,然后变为1 < 2099 ,当然,这总是正确的。

Javascript非常类似于C: 1990 < year返回truefalse ,并且这些布尔表达式似乎在数值上分别等于0和1。

但在C#中,它甚至不会编译,给你错误:

错误CS0019:运算符'<'不能应用于'bool'和'int'类型的操作数

你从Ruby得到了类似的错误,而Haskell告诉你,你不能在同一个中缀表达式中使用<两次。

在我的脑海中,Python是我唯一能够以这种方式处理“之间”设置的语言:

 >>> year = 5 >>> 1990 < year < 2099 False >>> year = 2000 >>> 1990 < year < 2099 True 

底线是第一种方式(x < y && y < z)始终是您最安全的选择。

你可以制作自己的方法:

 // jquery $(function() { var myNumber = 100; try { if (myNumber.isBetween(50, 150)) alert(myNumber + " is between 50 and 100."); else alert(myNumber + " is not between 50 and 100."); } catch (e) { alert(e.message()); } }); // js prototype if (typeof(Number.prototype.isBetween) === "undefined") { Number.prototype.isBetween = function(min, max, notBoundaries) { var between = false; if (notBoundaries) { if ((this < max) && (this > min)) between = true; alert('notBoundaries'); } else { if ((this <= max) && (this >= min)) between = true; alert('Boundaries'); } alert('here'); return between; } } 

希望这可以帮助。

马克斯

快速而简单的方法是创建一个这样的函数:

 function inRange(n, nStart, nEnd) { if(n>=nStart && n<=nEnd) return true; else return false; } 

然后使用如下:

 inRange(500, 200, 1000) => this return true; 

或者像这样:

 inRange(199, 200, 1000) => this return false; 

如果你不喜欢布尔运算符,你总是可以使用嵌套的if语句:

 if (1990 < year) { if( year < 2099) return 'good stuff'; } 

从这里的类似解决方案: http : //indisnip.wordpress.com/2010/08/26/quicktip-check-if-a-number-is-between-two-numbers/

 $.fn.between = function(a,b){ return (a < b ? this[0] >= a && this[0] <= b : this[0] >= b && this[0] <= a); } 

如果你问的是哪种语言有这个function,python会:

  if (1990 < year < 2099): return 'good stuff' 
Interesting Posts