5

私がやりたいこと自体は非常に単純ですが、同じことを達成するための本当にきちんとしたコンパクトな方法があるのではないかと思っています。

float 変数があり、その値が 0 と 1 の間にあるかどうかを確認したい。0 より小さい場合はゼロに設定し、1 より大きい場合は 1 に設定したい。

通常、私はこれを行います:

// var myVar is set before by some calculation

if(myVar > 1){
    myVar = 1;
}
if(myVar < 0){ 
    myVar = 0;
}

これを行うためのよりエレガントでコンパクトな方法を知っている人はいますか?

4

5 に答える 5

6

Math.minとMath.maxを使用し、条件を設定しないようにします。

var MAX = 100;
var MIN = 50;

var val = 75;
console.log( Math.max(MIN, Math.min(MAX, val)) );

var val = 49;
console.log( Math.max(MIN, Math.min(MAX, val)) );

var val = 101;
console.log( Math.max(MIN, Math.min(MAX, val)) );
于 2012-10-12T13:01:31.790 に答える
1

これは、単純な最小/最大以上のテストを行うために非常に簡単に拡張できるオプションです。

myVar = parseFloat( (myVar < 0 && '0') || (myVar > 1 && 1) || myVar );

parseFloatと文字列として0を返すことは重要です。そうでない場合は、そこで停止する必要があるときにその条件を通過します。

于 2012-10-12T13:01:54.350 に答える
0

多分これ:

 myVal = myVal >= 1 ? 1 : Math.min(Math.abs(myVal), 0)
于 2012-10-12T13:07:52.990 に答える