【问题标题】:javascript user input highest of 20 numbersjavascript用户输入最高的20个数字
【发布时间】:2016-07-18 19:47:04
【问题描述】:

对于这个程序,我需要用户输入 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>

【问题讨论】:

  • 我对 js 真的很陌生,我几乎不明白什么是变量。我真的需要白痴证明。

标签: javascript arrays display


【解决方案1】:
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

【讨论】:

  • 我不明白,我真的是 js 新手。你能告诉我整个代码吗
  • 我需要使用一个函数及其“函数部分”,有什么想法吗?
  • 添加了一个函数,该函数返回将Math.max应用于数组的结果。
  • 顺便说一句,您要求一种更简单的方法,而更简单的方法是不使用单独的函数...
  • 啊,好吧,所以如果我用 20 个输入来做,我需要像我用 4 个一样完成它吗?
【解决方案2】:

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

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

上面的例子允许传递一个数组或参数列表。这允许您在需要的地方重复使用。

【讨论】:

  • 对不起,你让我 100% 迷失了方向!
  • 该函数允许您从多个参数或数组中获取最大值。对第一个参数“argument[0]”进行测试,看它是否是一个数组。如果是,那么它将将该参数与 Math.max 一起使用,这是一个内置的 JavaScript 方法。按照链接。回退是使用 arguments 变量,它是传递给函数的所有参数的数组,直接在 Math.max 调用中。
【解决方案3】:

是的,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>');

【讨论】:

  • 它的用户输入,而不是分配的数字。一组数字不好。你能告诉我如何用用户提示来做吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 2023-03-24
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多