Isso não quer ser uma resposta "apenas use uma biblioteca", mas caso você esteja usando o Lodash, você pode usar .clamp
:
_.clamp(yourInput, lowerBound, upperBound);
De modo a:
_.clamp(22, -10, 10); // => 10
Aqui está sua implementação, extraída da fonte Lodash :
/**
* The base implementation of `_.clamp` which doesn't coerce arguments.
*
* @private
* @param {number} number The number to clamp.
* @param {number} [lower] The lower bound.
* @param {number} upper The upper bound.
* @returns {number} Returns the clamped number.
*/
function baseClamp(number, lower, upper) {
if (number === number) {
if (upper !== undefined) {
number = number <= upper ? number : upper;
}
if (lower !== undefined) {
number = number >= lower ? number : lower;
}
}
return number;
}
Além disso, vale a pena notar que o Lodash disponibiliza métodos únicos como módulos autônomos; portanto, caso você precise apenas desse método, basta instalá-lo sem o restante da biblioteca:
npm i --save lodash.clamp