javascript 用户输入 20 个数字中的最大值

javascript user input highest of 20 numbers

对于这个程序,我需要用户输入 20 个数字并显示最大的数字。我用 4 做了一个类似的,我将在下面显示,但是必须有一种更简单的方法来完成这一切吗?任何建议都会很棒。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

function maxNum(num1, num2, num3, num4){
        var max = 0;
        if((num1 >= num2) && (num1 >= num3)){
            max = num1;
        }
        else if((num2 >= num1) && (num2 >= num3) && (num3 >= num4)){
            max = num2;
        }

        else if((num3 >= num1) && (num3 >= num2) && (num3 >= num4)){
            max = num3;
        }

        else{
            max = num4;
        }
    return max;
    }

    var arr = []; 
    for(i=0;i<4;i++){
        arr[i] = parseInt(prompt("Enter a number"));
    }


    document.write(maxNum.apply(this, arr));





</script>
</body>
</html>

是的,Math.max.apply。它需要一个对象 (null) 和一个包含值的数组。

function getMax(array) {
    var i,
        max = +array[0]; // the first element with implicit casting to number

   for (i = 1; i < array.length; i++) { // loop throu all elements
       if (+array[i] > max) { // with cast to number
           max = array[i];
       }
   }
   return max;
}

var userInput = ['1', 'a', '4', '-', '1000', '20'].filter(Number);
document.write(userInput + '<br>');
document.write(Math.max.apply(null, userInput) + '<br>');
document.write(getMax(userInput) + '<br>');

function findMaxNum(arr) {
  return Math.max.apply(null, arr);
}

var arr = []; 

for (var i = 0; i < 4; i++) {
  arr[i] = parseInt(prompt('Enter a number'), 10);
}

var maxNum = findMaxNum(arr);

Math.max 通常用于一系列数字:Math.max(1, 4, 10) // 10,但这里我们在函数上使用 apply,以便它接受数组。

(注意,添加了 parseInt 的基数)

DEMO

假设传递给函数的所有值都是数字,您可以使用 Math.max with the arguments 特殊变量。

function getMax()
{
    if (Object.prototype.toString.call(arguments[0]) === '[object Array]') {
        return Math.max.apply(null, arguments[0]);
    }
    return Math.max.apply(null, arguments);
}

var myArr = [2,4,6,8,10,12,14,16,18,20];

getMax(1,2,4,5,6,7,8,10); // 10
getMax(myArr); // 20

上面的示例允许传递数组或参数列表。这允许您在需要时重复使用。