2010-12-10 3 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 возвращает true или false, и эти логические выражения, кажется, численно сравнить равны 0 и 1 соответственно.

Но в C#, он не будет даже компиляции, давая вам ошибку:

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

Вы получаете подобную ошибку от Ruby, в то время как Haskell говорит вам, что вы не можете использовать < дважды в одном выражении инфиксной ,

Off верхней части моей головы, Python является единственным языком, который я уверен, что обрабатывает «между» установки таким образом:

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

Суть заключается в том, что первый способ (x < y && y < z) всегда ваш самый безопасный делать ставку.

+0

ОК, я имел в виду JavaScript, извините. Я думаю, что два оператора с && - единственный способ? – Inigo 2010-12-10 12:15:20

+0

Правильно, это прояснилось! спасибо – Inigo 2010-12-10 12:23:07

0

Если вы спрашиваете, какой язык имеет эту функцию, питон делает:

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

Если вам не нравится логический оператор, вы всегда можете использовать вложенные если заявления:

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