[解決済み] セグメントに数字をキャップする最もエレガントな方法は何ですか?
2022-04-22 14:31:38
質問
例えば
x
,
a
と
b
は数字です。を制限する必要があります。
x
をセグメント
[a, b]
.
つまり クランプ機能 :
clamp(x) = max( a, min(x, b) )
誰かこれをもっと読みやすいバージョンにしてくれませんか?
どのように解決するのですか?
やり方はいたって普通です。ユーティリティを定義して
clamp
関数を使用します。
/**
* Returns a number whose value is limited to the given range.
*
* Example: limit the output of this computation to between 0 and 255
* (x * 255).clamp(0, 255)
*
* @param {Number} min The lower boundary of the output range
* @param {Number} max The upper boundary of the output range
* @returns A number in the range [min, max]
* @type Number
*/
Number.prototype.clamp = function(min, max) {
return Math.min(Math.max(this, min), max);
};
(言語組み込みの拡張は一般的に嫌われますが)。
関連
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] オブジェクトの配列から、プロパティの値を配列として取り出す。
-
[解決済み] JavaScriptには、与えられた範囲内の範囲を生成する "range() "のようなメソッドがありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vueにおけるfilterの適用シーンについて解説します。
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] ある数値が2つの値の間にあるかどうかを確認するには?