如果值在两个数字之间

时间:2010-12-10 12:08:18

标签: jquery if-statement date-range

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

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

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

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

6 个答案:

答案 0 :(得分:21)

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

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

Javascript非常类似于C:1990 < year返回truefalse,这些布尔表达式似乎在数值上分别等于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'