値が数値の範囲内にあるかどうかをテストできるようにしたい。これは私のjQueryコードです...
if ((year < 2099) && (year > 1990)){
return 'good stuff';
}
JQueryでこれを行う簡単な方法はありますか?たとえば、次のようなものがあります...
if (1990 < year < 2099){
return 'good stuff';
}
多くの言語では、2番目の方法は、必要なものに関して左から右に誤って評価されます。
たとえば、Cでは、1990 < year
は0または1に評価され、次に1 < 2099
になります。これは、もちろん常にtrueです。
JavascriptはCに非常に似ています:1990 < year
はtrue
またはfalse
を返し、これらのブール式は数値的にそれぞれ0と1に等しいように見えます。
しかし、C#では、コンパイルすらできず、エラーが発生します。
エラーCS0019:演算子 '<'は、タイプ 'bool'および 'int'のオペランドには適用できません
Rubyからも同様のエラーが発生しますが、Haskellは同じ中置式で<
を2回使用できないと指示しています。
私の頭の上の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;
ここで同様のソリューションから: 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);
}
ブール演算子が気に入らない場合は、ネストされたifステートメントを常に使用できます。
if (1990 < year)
{
if( year < 2099)
return 'good stuff';
}