我正在尝试制作一个程序,通过将所有数字的总和除以数字总数来计算平均数。我尝试使用.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;
这个额外的+称为一元加运算符,可将字符串转换为数字。
关于javascript - JavaScript-使用reduce函数来自数组的中间数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44474336/