JavaScript - 使用reduce函数从数组中取数

时间:2017-06-10 14:17:19

标签: javascript arrays

我正在尝试制作一个计算平均数的程序,将所有数字的总和除以总数。我试图使用.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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:3)

数字必须是数字:

var numbers = +document.getElementById("numbers").value;

这个额外的+被称为一元加运算符,它将字符串转换为数字。

答案 1 :(得分:2)

您可以在添加

之前解析该值
total = allNums.reduce(function(a, b) {
    return parseInt(a) + parseInt(b);
  }, 0);