【JavaScript】計算結果をif文や3項演算子を使わずに最大値や最小値で丸める方法
更新日:2023/07/26
最小値や最大値を決めておいて、演算結果がその範囲を超えたらそれらの値に丸めることがあります。
if文や3項演算子を使用する方法が思い浮かびます。
今回はJavaScriptでもう少しすっきりとした方法を紹介します。
if文や3項演算子を使用する例
if文で計算結果を最小値で丸めるとき、次のようなコードになります。
const MIN = 0;
let result = value1 - value2;
if( result < MIN ) result = MIN;
letを避けるなら、3項演算子で次のように記述することもできますね。
const MIN = 0;
const result = value1 - value2 < MIN ? MIN : value1 - value2;
3項演算子で同じ計算を二度しているので改良の余地がありますが、基本的にはこれで十分です。
Math.max()とMath.min()を使用する
if文や3項演算子を使用すると、どうしてもコードが煩雑になります。
もう少し簡潔に記述したいときは、Math.max()とMath.min()を使用できます。
最小値で丸めたいときは、Math.max()を使用します。
const MIN = 0;
console.log( Math.max( MIN , 10 - 100 ) ); // 結果: 0
console.log( Math.max( MIN , 100 - 10 ) ); // 結果: 90
イメージ的にはMath.min()のような気がしますが、逆ですね。
最大値で丸めたいときは、Math.min()です。
const MAX = 0;
console.log( Math.min( MAX , 10 - 100 ) ); // 結果: -90
console.log( Math.min( MAX , 100 - 10 ) ); // 結果: 0
最小値と最大値を同時に適用
最小値と最大値を同時に適用したいときは、Math.max()とMath.min()を組み合わせます。
const MIN = 0;
const MAX = 100;
console.log( Math.min( MAX , Math.max( MIN , -100 ) )); // 結果: 0
console.log( Math.min( MAX , Math.max( MIN , 50 ) )); // 結果: 50
console.log( Math.min( MAX , Math.max( MIN , 150 ) )); // 結果: 100
何度も使用するなら関数化しておきましょう。
const rangeValue = (value,max,min)=>Math.min( max , Math.max( min , value ) );
更新日:2023/07/26
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。