1. ホーム
  2. javascript

[解決済み] セグメントに数字をキャップする最もエレガントな方法は何ですか?

2022-04-22 14:31:38

質問

例えば x , ab は数字です。を制限する必要があります。 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);
};

(言語組み込みの拡張は一般的に嫌われますが)。