添加数组值时出现问题.信息是串联的,而不是相加的



我正在创建一个函数,该函数查找可被三整除的数字,然后将所有这些数字相加。例如,21 可被 3、6、9、12、15、18 和 21 整除。

然后我想将这些数字相加,结果将是 84。我能够将信息获取到数组中,然后遍历每个数组元素,但是当我添加它们时,它似乎将数组连接为字符串而不是添加数字。

我尝试将变量转换为数字,但我无法弄清楚我哪里出错了。

document.getElementById("btn").addEventListener("click", solution);
var outPutID = document.getElementById("outPutID");
function solution() {
    var userInput1 = document.getElementById("userInput1ID").valueAsNumber;
    var myArray = [];
    var timesToAdd = parseFloat(userInput1 / 3);
    var remainder = parseFloat(userInput1 % 3);
    var total = (userInput1 - remainder) / 3;
    for (i = 0; i < total; i++) {
        var sum = 3 + (3 * i);
        myArray[i] = parseInt(sum);
    }
    var sumArray;
    for (a = 0; a < myArray.length; a++) {
        sumArray += myArray[a];
    }
    outPutID.innerHTML = sumArray;
}
<input type="number" value="21" id="userInput1ID">
<input type="button" value="Go" id="btn">
<hr>
<div id="outPutID"></div>

代码有几个问题:

  • 您正在使用parseFloatparseInt数字。没有必要或没有必要这样做,它们已经是数字了。
  • 你从不声明ia,所以代码正在成为隐式全局的恐怖的牺牲品(这是我贫血的小博客上的一篇文章(

。但主要问题是sumArray从未被赋予初始值,因此它采用默认值 undefined .然后你用一个数字来+=

sumArray += myArray[a];

undefined + anyNumberNaNNaN + anyNumberNaN

您需要在开始时将0分配给sumArray

document.getElementById("btn").addEventListener("click", solution);
var outPutID = document.getElementById("outPutID");
function solution() {
    var userInput1 = document.getElementById("userInput1ID").valueAsNumber;
    var myArray = [];
    var timesToAdd = userInput1 / 3;
    var remainder = userInput1 % 3;
    var total = (userInput1 - remainder) / 3;
    for (var i = 0; i < total; i++) {
        var sum = 3 + (3 * i);
        myArray[i] = sum;
    }
    var sumArray = 0;
    for (var a = 0; a < myArray.length; a++) {
        sumArray += myArray[a];
    }
    outPutID.innerHTML = sumArray;
}
<input type="number" value="21" id="userInput1ID">
<input type="button" value="Go" id="btn">
<hr>
<div id="outPutID"></div>

最新更新