如何在JavaScript中创建数组的平均值

时间:2016-01-14 19:41:16

标签: javascript html arrays average

这是我的GCSE计算机科学。这是代码:

<html>
<p id="demo"></p>
<script>
var middaytemp = []; midnighttemp = [];
for (count = 0; count <= 29; count++) {
middaytemp[count] = prompt("What was the temperature at midday");
midnighttemp[count] = prompt("what was the temperature at midnight?");
document.getElementById("demo").innerHTML += middaytemp[count] + "&deg; Celcius<br>";
document.getElementById("demo").innerHTML += midnighttemp[count] + "&deg; Celcius<br>";
}
</script>
</html> 

正如你所看到的那样,这两个问题每次都要问29次。我把它们放在一个数组中,但我需要找到数组的平均值。所以当温度在代码末尾放入时,会显示当晚的平均值和当天的平均值。

4 个答案:

答案 0 :(得分:2)

使用reduce!这会将midday的总和返回sum

let sum = midday.reduce((x,y) => x+y);
sum = sum/midday.length; //average

我在这里使用了一个名为lambda expression或“胖箭头功能”的ES6功能。它是匿名函数的词法等价物,用作数组reduce函数的回调参数。

var sum = midday.reduce(function(x,y) {
    return x+y;
});

使用lambda表达式,隐含返回,这就是您只需要=> x+y的原因。多行需要{ ... }。这是箭头函数语法的documentation

答案 1 :(得分:1)

只需遍历数组,因为您的值是字符串,所以必须先将它们转换为整数。而平均值只是值的总和除以值的数量。

var sum = 0; for( var i = 0; i < elmt.length; i++ ){ sum += parseInt( elmt[i], 10 ); //don't forget to add the base } var avg = sum/elmt.length; document.write( "The sum of all the elements is: " + sum + " The average is: " + avg );

答案 2 :(得分:0)

您可以通过以下

获得结果
var sumTempDay = 0;

for (var i = 0 ; i < middaytemp.length; i++) {
   sumTempDay += middaytemp[i];

}

var avgTempDay = sumTempDay/middaytemp .length;

var sumTempNight = 0;

for (var i = 0 ; i < midnighttemp.length; i++) {
   sumTempNight += midnighttemp[i];

}

var avgTempNight = sumTempNight/midnighttemp.length;

答案 3 :(得分:0)

您需要先将字符串转换为float。然后计算平均值。

var sum = 0
middaytemp.forEach(function(val){
    sum += parseFloat(val);
})
var average = sum/middaytemp.length;