2010-12-10 53 views
10

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

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

在jQuery中有更简单的方法吗?例如,有没有这样的事情......

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

回答

19

在许多语言中,第二种方式将从左评估正确地对待你想要的东西。

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

JavaScript是一种非常类似于C:1990 < year返回truefalse,并且这些布尔表达式似乎分别进行数值比较等于0和1。

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

error CS0019: Operator '<' cannot be applied to operands of type 'bool' and 'int'

你从红宝石类似的错误,而哈斯克尔告诉你,你不能在同一缀表达式中使用<两次。

关闭我的头顶,Python的是,我敢肯定的唯一语言处理设置“之间”那样:

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

的底线是,第一种方式(x < y && y < z)永远是你最安全的赌注。

+0

OK,我会在JavaScript的意思,对不起。我猜这两个语句是&&是唯一的方法? – Inigo 2010-12-10 12:15:20

+0

好吧,这是清除了!谢谢 – Inigo 2010-12-10 12:23:07

0

如果你问的语言有此功能,Python做:

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

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

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

你可以做你自己的方法:

// 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; 
    } 
} 

希望这会有所帮助。

最大

+0

非常漂亮的代码。谢谢。 – 2016-06-16 04:27:07

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); 
} 
+0

-1。你已经将它添加到jQuery对象的原型中,当它被添加到'Number'的原型时,如你提供的链接所述。这不仅与OP的问题有关,而且这是一个无意义的事情。 – 2013-06-08 13:42:24

+0

为什么这不涉及? OP要求提供jQuery解决方案,该链接描述了一个本地js解决方案。 jquery中的所有东西都是一个对象,因此是对象的原型。为什么它是荒谬的?同意,它要求引用对象的价值,而不是对象本身(我已经纠正),但我几乎认为这使得它无意义...工作示例:http://jsfiddle.net/xq4NE/ – 2013-06-10 15:01:40

+0

嗯。在你修改之后,我会承认它不再是无稽之谈。这仍然不是我想要做的事情;没有理由说jQuery解决方案比你链接的更好,并且据我所知,在数字上调用jQuery(你需要做一些像$(4)。之间(3,5)'isn人们所做的事情(合理,因为jQuery对象的大多数方法都是针对DOM元素的);你不必要地从正常的jQuery模式中解脱出来,并迫使jQuery解决方案去做一些不需要的东西。 http://www.doxdesk.com/img/updates/20091116-so-large.gif – 2013-06-10 15:13:13

相关问题