是否有一种简单的方法来获取两个值或这些值之间的数字?
例如:

min: 10, max: 100
(in -> out)

   1 -> 10
   5 -> 10
  10 -> 10
  50 -> 50
 100 -> 100
1000 -> 100
9999 -> 100


现在我正在使用这个:



Math.max(10, Math.min(100, value));


但是有没有更有效和/或更优雅的方法来做到这一点?

最佳答案

这可能是多余的,但是这是一个可重用的解决方案:

function clamper(min, max) {
    return function(v) {
        return v > max ? max : (v < min ? min : v);
    };
}

var clamp = clamper(0, 100);

console.log(clamp(25));
console.log(clamp(50));
console.log(clamp(74));
console.log(clamp(120));
console.log(clamp(-300));


小提琴:http://jsfiddle.net/mx3whct6/

09-20 08:19