Я пытаюсь сделать программу, которая будет вычислять среднее число, делением суммы всех чисел на общее число чисел. Я попытался использовать .reduce()
, но это не даст мне результат, который я хочу. Например, если я беру "4" и "2", программа должна сделать сумму этих двух, что составляет "6", а затем разделить ее на "2" (так как есть две цифры, которые составляют сумму), поэтому в итоге я получил бы "3". Однако то, что я получаю, это "21", скорее всего, потому что программа объединяет "4" и "2", так что результат будет "42", а затем он делит на "2". Как я могу изменить код, чтобы получить правильный результат?
var numOfNum = 0;
var result;
var allNums = [];
var total = 0;
function add() {
var numbers = document.getElementById("numbers").value;
if (numbers > 5) {
alert("Maximum character limit reached.");
} else {
allNums.push(numbers);
numOfNum++;
document.getElementById("output").innerHTML = allNums + "<br>" + numOfNum;
}
total = allNums.reduce(function(a, b) {
return a + b;
}, 0);
}
function calculate() {
result = total / numOfNum
document.getElementById("output").innerHTML = result;
}
<!DOCTYPE html>
<html>
<head>
<title>Racunanje proseka</title>
<meta charset="UTF-8">
<script src="racunanjeProseka.js"></script>
</head>
<body>
<input type="text" id="numbers"> <br>
<button id="add" onclick="add()">Add</button>
<button id="calculate" onclick="calculate()">Calculate</button>
<p id="output"></p>
</body>
</html>
номера должны быть числом:
var numbers = +document.getElementById("numbers").value;
Этот дополнительный + называется оператором унарного плюса, который преобразует строки в числа.
вы можете проанализировать значение перед добавлением
total = allNums.reduce(function(a, b) {
return parseInt(a) + parseInt(b);
}, 0);