2016-01-14 29 views
0

這適用於我的GCSE計算機科學。這裏的代碼:如何在JavaScript中創建數組的平均值

<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次。我有他們在一個數組,但我需要找到數組的平均值。所以當代碼結束時將溫度放入時,它會顯示夜晚的平均值和當天的平均值。

+2

這些問題每個都要問三十次。但你卡在哪裏?你不知道如何實施哪些部分? –

+0

'Celsius',不'Celcius' –

+0

是的,我知道。這是一個錯字。我需要找到平均值並輸出。再次感謝。 Luke –

回答

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; 
+1

非常感謝。真的有幫助。我會去做。我在哪裏提示(「什麼是臨時中午」)。抱歉。我對此很陌生。謝謝。盧克 –

+0

感覺很好,以幫助您 – nikhil

+0

我在哪裏問我的臨時提示?對不起,我是新手。謝謝。 Luke –

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); 
+0

你如何遍歷數組?你能舉個例子嗎?再次感謝。 Luke –

+0

var sum = 0;對於(var i = 0; i

+0

^對不起 - 不習慣使用正確的格式。我希望它仍然是有道理的。 –

2

使用reduce!這會將midday的總和返回sum

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

我用了一個ES6特徵在這裏被稱爲lambda expression或「胖箭頭函數」。它是匿名函數的詞彙等價物,用作數組reduce函數的回調參數。

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

使用lambda表達式時,隱含返回值,這就是爲什麼您只需要=> x+y。多行需要{ ... }。以下是箭頭函數語法的documentation

+0

看看OP的代碼;你需要解釋什麼是'Array.prototype.reduce()',以及什麼是箭頭函數,以及它們是如何工作的。 –

+1

我鏈接到reduce文檔,但我會解釋lambda。 –

+0

非常感謝。 Luke –

0

您需要先將字符串轉換爲浮點數。然後計算平均值。

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