我希望能够测试一个值是否在数字范围内。这是我的jQuery代码......
if ((year < 2099) && (year > 1990)){
return 'good stuff';
}
在jQuery中有更简单的方法吗?例如,有这样的东西......
if (1990 < year < 2099){
return 'good stuff';
}
答案 0 :(得分:21)
在许多语言中,第二种方式将根据您的需要从左到右进行不正确的评估。
例如,在C中,1990 < year
将评估为0或1,然后变为1 < 2099
,当然,这总是正确的。
Javascript非常类似于C:1990 < year
返回true
或false
,这些布尔表达式似乎在数值上分别等于0和1。
但在C#中,它甚至不会编译,给你错误:
错误CS0019:运营商'&lt;'不能应用于'bool'和'int'
类型的操作数
你从Ruby那里得到了类似的错误,而Haskell告诉你,你不能在同一个中缀表达式中使用<
两次。
在我的脑海中,Python是唯一能够以这种方式处理“之间”设置的语言:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
最重要的是,第一种方式(x < y && y < z)
始终是您最安全的选择。
答案 1 :(得分:9)
您可以制作自己的方法:
// 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;
}
}
希望这会有所帮助。
最高
答案 2 :(得分:2)
快速而简单的方法是创建一个这样的函数:
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;
答案 3 :(得分:0)
如果你不喜欢布尔运算符,你总是可以使用嵌套的if语句:
if (1990 < year)
{
if( year < 2099)
return 'good stuff';
}
答案 4 :(得分:0)
从这里的类似解决方案: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);
}
答案 5 :(得分:-2)
如果你问的是哪种语言有这个功能,python会:
if (1990 < year < 2099):
return 'good stuff'