【问题标题】:How to determine the highest and lowest numbers from an array that generates random numbers; JavaScript如何从生成随机数的数组中确定最高和最低数; JavaScript
【发布时间】:2015-04-08 16:21:55
【问题描述】:

Javascript:

    var arrayLength = prompt("Enter how many elements you want?");

                if(isNaN(arrayLength) || arrayLength < 1){
                    arrayLength = 50;
                }

            var array = [];
            var list = "<ul>";

            var totalSum = 0;
            var totalOddSum = 0;
            var totalEvenSum = 0;
            var lowestNum = 0;
            var highestNum = 0;

            for(i = 1; i <= arrayLength; i++){

                array[i] = parseInt(Math.random() * 15);
                list += "<li>" + array[i] + "</li>";

                totalSum += array[i];

                if(array[i] % 2 == 0){
                    totalEvenSum += array[i];
                }
                    else{
                        totalOddSum += array[i];
                    }
            }

            list += "</ul>";

            document.getElementById("div1").innerHTML += list;

            document.getElementById("div2").innerHTML += "Total Sum: " + totalSum + "<br>";
            document.getElementById("div2").innerHTML += "Total Even Sum: " + totalEvenSum + "<br>";
            document.getElementById("div2").innerHTML += "Total Odd Sum: " + totalOddSum + "<br>";
            document.getElementById("div2").innerHTML += "Lowest Number: " + lowestNum + "<br>";
            document.getElementById("div2").innerHTML += "Highest Number: " + highestNum + "<br>";

HTML:

<div id="div1">
        </div>

<div id="div2">
</div>

正如标题所说,我希望能够找到我的数组生成的最低和最高数字。为了找到 Math.random() 生成的最高和最低数字,我需要在循环中实现什么?

谢谢大家。

【问题讨论】:

    标签: javascript html arrays loops random


    【解决方案1】:

    首先,最小值和最大值的初始值是错误的:

    var lowestNum = 0;
    var highestNum = 0;
    

    最小值应初始化为+Inf,最大值应初始化为-Inf。

    var lowestNum = Infinity, highestNum = -Infinity;
    

    然后,添加一个简单的条件来更新到目前为止找到的最低和最高

    if (array[i] < lowestNum) {
        lowestNum = array[i];
    }
    if (array[i] > highestNum) {
        highestNum = array[i];
    }
    

    在循环结束时,变量将代表整个数组中的最小和最大数字。

    【讨论】:

      【解决方案2】:

      您可以使用Math.max()Math.min() 查找数组中的最大值或最小值:

      var highest = Math.max.apply(Math, array);
      
      var lowest = Math.min.apply(Math, array);
      

      没有必要做你自己的循环。这是因为Math.max()Math.min() 都将采用任意数量的参数并对所有参数进行操作,因此如果您使用.apply() 将数组作为一系列参数传递,它将一次性计算整个数组函数调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        相关资源
        最近更新 更多