【问题标题】:Javascript min maxJavascript 最小值最大值
【发布时间】:2011-12-22 15:57:07
【问题描述】:

在 PHP 中,您可以使用它来保持 2 个值之间的数字,最小值和最大值:

$n = min(max($n, 1), 20);

因此,如果 $n 大于 20,它将采用 20 的值。 如果小于 1 则取 1 的值,否则不会改变

如何在 javascript / jQuery 中做到这一点?

【问题讨论】:

  • 这实际上是错误的代码。用几乎任何通用语言编写一个通用限制器就这么简单:function limiter (L, n, H) { return n > H ? H : (n

标签: javascript floating-point max min


【解决方案1】:

在 JavaScript 中几乎相同,只是 minmaxMath 对象的成员:

var n = Math.min(Math.max(n, 1), 20);

【讨论】:

  • 对于我们这些沉迷于扩展 Math 对象的人:Math.limit = function (min, num, max) { return Math.max(min, Math.min(num, max)); }
【解决方案2】:

JavaScript 有 Math.min [MDN]Math.max [MDN]

或者,您可以使用条件运算符:

n = n > 20 ? 20 : (n < 1 ? 1 : n)

【讨论】:

  • 这可能比 Tim Cooper 的答案更好,因为它更通用,因为它适用于任何可以与固有的大于和小于比较器进行比较的 JS 类型。
【解决方案3】:

你可以用最小值和最大值来做,但我认为if 更清晰。

if (x > 20) x = 20;
if (x < 1) x = 1;

【讨论】:

    【解决方案4】:

    你不能取变量的最大值和最小值。但是,将变量推入数组并找到数组的最大值和最小值(语法略有不同)很容易:

    var value1 = 5;
    var value2 = 25;
    var value3 = -3;
    
    var arr = [];
    arr.push(value1);
    arr.push(value2);
    arr.push(value3);
    
    var maxValue = Math.max.apply(null, arr);
    var minValue = Math.min.apply(null, arr);
    
    alert(maxValue);// ==25
    alert(minValue);// ==-3
    

    或等效

    var value1 = 5;
    var value2 = 25;
    var value3 = -3;
    
    var maxValue = Math.max.apply(null, [value1, value2, value3]);
    var minValue = Math.min.apply(null, [value1, value2, value3]);
    
    alert(maxValue);// ==25
    alert(minValue);// ==-3
    

    【讨论】:

    • Felix Kling 解决方案更好。它是通用的。不仅仅是数字。但诚然,原来的问题有点没有实际意义。
    猜你喜欢
    • 2016-11-04
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 2019-02-10
    • 2023-04-02
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多