我正在尝试制作一个计算平均数的程序,将所有数字的总和除以总数。我试图使用.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;
}
&#13;
<!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>
&#13;
答案 0 :(得分:3)
数字必须是数字:
var numbers = +document.getElementById("numbers").value;
这个额外的+被称为一元加运算符,它将字符串转换为数字。
答案 1 :(得分:2)
您可以在添加
之前解析该值total = allNums.reduce(function(a, b) {
return parseInt(a) + parseInt(b);
}, 0);