2016-01-14 3 views
0

Это для моей GCSE Computer Science. Вот код:Как сделать среднее значение массива в 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

Большое спасибо. Действительно помог. Я это сделаю. Где я могу поместить подсказку («whats temp в полдень»). Сожалею. Я новичок в этом. Благодарю. Luke –

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

С лямбда-выражения, возвращение Подразумевается, поэтому вам нужно только => x+y. Для нескольких строк потребуется { ... }. Вот documentation для синтаксиса функции стрелки.

+0

Посмотрите на код OP; вам нужно объяснить, что делает 'Array.prototype.reduce()', и какие функции стрелок и как они работают. –

+1

Я связался с документами уменьшения, но я объясню лямбду. –

+0

Большое спасибо. Luke –

0

Вам необходимо сначала преобразовать строку в поплавок. Затем вычислите среднее значение.

var sum = 0 
middaytemp.forEach(function(val){ 
    sum += parseFloat(val); 
}) 
var average = sum/middaytemp.length; 
Смежные вопросы