Javascript 使用循环查找数组中的最低/最高数字

Javascript 使用循环查找数组中的最低/最高数字,javascript,arrays,loops,Javascript,Arrays,Loops,对于我的web开发课程,我有以下作业: 在你的老板允许在办公室套房里安装可调恒温器之前,他必须确信,在不同的日子里,不同的官员和办公室内会发生重大的温度变化。您需要编写一个程序,允许每位员工在五天中的每一天中午输入温度,并显示最高、最低和平均(平均)温度。使用For循环获取五个读数。(提示:将最高和最低温度变量初始化为读取的第一个温度,然后比较其他温度,查看它们是更低还是更高。)使用parseFloat()方法将温度输入转换为十进制数,并将平均值显示为小数点后一位 我怎样才能找到平均温度 <

对于我的web开发课程,我有以下作业:

在你的老板允许在办公室套房里安装可调恒温器之前,他必须确信,在不同的日子里,不同的官员和办公室内会发生重大的温度变化。您需要编写一个程序,允许每位员工在五天中的每一天中午输入温度,并显示最高、最低和平均(平均)温度。使用For循环获取五个读数。(提示:将最高和最低温度变量初始化为读取的第一个温度,然后比较其他温度,查看它们是更低还是更高。)使用parseFloat()方法将温度输入转换为十进制数,并将平均值显示为小数点后一位

我怎样才能找到平均温度

<!DOCTYPE HTML>
<html>
<body>
    <script type="text/javascript">
    var high; // highest temperature
    var low; // lowest temperature
    var avg; // average temperature

    var temperatures = [];

    for (var i = 0; i < 5; i++) {
        high = temperatures[0];
        low = temperatures[0];

        temperatures.push(parseFloat(prompt("Enter the temperature for day " + (i+1))));

        if (high < temperatures[i]) {
            high = temperatures[i]; }
        if (low > temperatures[i]) {
            low = temperatures[i]; }

    }

    document.write("The highest temperature is " + high + ".<br>");
    document.write("The lowest temperature was " + low + ".<br>");
    document.write("The average temperature was " + avg + ".");
    </script>
</body>
</html>

var高;//最高温度
var低;//最低温度
var平均值;//平均温度
var温度=[];
对于(变量i=0;i<5;i++){
高=温度[0];
低温=温度[0];
温度。按(parseFloat(提示(“输入当天的温度”+(i+1)));
if(高温<温度[i]){
高温=温度[i];}
如果(低温>温度[i]){
低温=温度[i];}
}
文件。写入(“最高温度为“+高+”
”; 写下(“最低温度为“+低+”
”; 记录(“平均温度为“+avg+”);
您正在将alltemp中的值设置为高或低,而不是相反。这里有一把小提琴向您展示了如何做到这一点(因为您必须使用for循环,但有更简洁的方法):

var nums=[2,55,3,87,4,23],
高=低=nums[0];
对于(变量i=0;i
步骤1

@Emily,这里有一些东西可以让您开始使用
for
循环来收集用户输入

var temperatures = [];

for (var i = 1; i <= 5; i++) {
    var temperature = prompt('Enter temperature for day ' + i);
    // Parse input and add it to the temperatures array
}
您需要做的另一个小更改是,在循环中分配
值,但在将任何值推送到
温度
数组之前,我们需要查看这一点

但首先,找到平均温度。所以,正如你已经知道的,平均值是所有值的总和,除以值的数量。在循环的每次迭代中,我们都会得到下一个温度值。因此,我们可以使用循环将所有这些值相加。详情如下:

var temperature = prompt('Enter the temperature for day ' + (i + 1));
temperatures.push(parseFloat(temperature));
var temperatures = [];
var total = 0;
var high;
var low;
var avg;

for (var i = 0; i < 5; i++) {
    // Capture, parse and append temperature to temperatures array
    var temperature = prompt('Enter the temperature for day ' + (i + 1));
    temperatures.push(parseFloat(temperature));

    // Increment total by new temperature value
    total += temperature;
}
var temperatures = [];
var total = 0;
var high = Number.NEGATIVE_INFINITY;
var low = Number.POSITIVE_INFINITY;
var avg;

for (var i = 0; i < 5; i++) {
    // Capture, parse and append temperature to temperatures array
    var temperature = prompt('Enter the temperature for day ' + (i + 1));
    temperatures.push(parseFloat(temperature));

    // Increment total by new temperature value
    total += temperature;

    // Compare high and low temperatures
    if (high < temperature) high = temperature;
    if (low > temperature) low = temperature;
}
然后,在循环的每次迭代中,我们使用您已经编写的代码,将当前温度与之前的
值进行比较。详情如下:

var temperature = prompt('Enter the temperature for day ' + (i + 1));
temperatures.push(parseFloat(temperature));
var temperatures = [];
var total = 0;
var high;
var low;
var avg;

for (var i = 0; i < 5; i++) {
    // Capture, parse and append temperature to temperatures array
    var temperature = prompt('Enter the temperature for day ' + (i + 1));
    temperatures.push(parseFloat(temperature));

    // Increment total by new temperature value
    total += temperature;
}
var temperatures = [];
var total = 0;
var high = Number.NEGATIVE_INFINITY;
var low = Number.POSITIVE_INFINITY;
var avg;

for (var i = 0; i < 5; i++) {
    // Capture, parse and append temperature to temperatures array
    var temperature = prompt('Enter the temperature for day ' + (i + 1));
    temperatures.push(parseFloat(temperature));

    // Increment total by new temperature value
    total += temperature;

    // Compare high and low temperatures
    if (high < temperature) high = temperature;
    if (low > temperature) low = temperature;
}
步骤3

如果您感兴趣,可以进一步改进此代码。但这可能超出了这个问题的范围


如果您想改进它,请查看
Math.min()
Math.max()
apply()
。我很高兴发布更多的代码,展示如何使用这些代码获取高温和低温,以及
Array.prototype.reduce
计算平均值。

几点让您开始。1) 问题说明
使用For循环获取五个读数
,但使用的是单独的变量。这可以在一个循环中实现。你知道怎么做吗?2) 您正在用
high
覆盖
alltemp
中的
temp1
,然后用
low
覆盖,这两个都是
未定义的
。而你却想做相反的事。将
high
low
设置为等于
alltemp[0]
@fubar谢谢您的帮助!我能够让回路返回正确的高温和低温。但是,我不知道如何摆脱temp1、temp2、temp3等变量,并使其仍然有效。请看下面我发布的答案。这不是一个完整的解决方案,但它会让你开始。然后,如果你用更新的代码编辑你的问题,我可以尝试进一步帮助你。@fubar更新了…现在,没有所有这些变量,我不知道该怎么做才能找到平均温度。我已经用更新的答案回答了,希望能帮助你完成思考过程。让我知道你的问题,如果有。危险将robinson
low
在这里是全局定义的。小心你走的那些捷径!