如果值在两个数字之间
我希望能够测试一个值是否在数字范围内。 这是我的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
返回true
或false
,并且这些布尔表达式似乎在数值上分别等于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'