Javascript数组的Sum函数问题

时间:2015-03-09 22:38:48

标签: javascript arrays function

这适用于我的乘法函数,但是当我用简单的+ =尝试它时,它会按顺序生成数组值而不是添加它们吗?

//sum()
function sum() {
    var val1 = document.getElementById('sumMulti').value;
    var array = val1.split(',');
    
    var arraySum = 0;
    for (var i = 0; i < array.length; i++) {
        arraySum += array[i];
        
    }
    document.getElementById('displayLabel').innerHTML = "The sum of your numbers is: " + arraySum.toString() + ".";
}
<div class="col-md-4">  
  <label class="control-label">Enter Numbers Seperated by ",":</label>
  <br />
  <input type="text" id="sumMulti" class=" form-control" />            
  <button type="submit" onclick="sum()" class="btn btn-primary pull-right" style="margin:20px 60px 10px 0px;">Sum()</button>
  
  <div id="displayLabel" class="control-label"></div>
    
</div>

2 个答案:

答案 0 :(得分:2)

您需要将数字解析为整数。

//sum()
function sum() {
    var val1 = document.getElementById('sumMulti').value;
    var array = val1.split(',');
    
    var arraySum = 0;
    for (var i = 0; i < array.length; i++) {
        arraySum += parseInt( array[i] );
        
    }
    document.getElementById('displayLabel').innerHTML = "The sum of your numbers is: " + arraySum.toString() + ".";
}
<div class="col-md-4">  
  <label class="control-label">Enter Numbers Seperated by ",":</label>
  <br />
  <input type="text" id="sumMulti" class=" form-control" />            
  <button type="submit" onclick="sum()" class="btn btn-primary pull-right" style="margin:20px 60px 10px 0px;">Sum()</button>
  
  <div id="displayLabel" class="control-label"></div>
    
</div>

答案 1 :(得分:0)

你需要学会喜欢parseInt功能。

默认基数为10,但您也可以指定其他基数(例如,有时使用parseInt(hexString, 16)解析十六进制非常方便。)

如果您期望实数,则可能更喜欢parseFloat。它采用相同的参数。

至于为什么这适用于乘法,Javascript因背后的类型转换而臭名昭着。字符串有+运算符(连接),因此当您获得输入的值(在解析之前是一个字符串)时,它将执行连接。但是,字符串 没有*运算符。在你的背后,Javascript运行时尝试将字符串解析为十进制数,然后相乘。这不是我所依赖的行为,所以我更愿意先显式解析所有输入,然后对它们执行算术运算。

//sum()
function sum() {
    var val1 = document.getElementById('sumMulti').value;
    var array = val1.split(',');
    
    var arraySum = 0;
    for (var i = 0; i < array.length; i++) {
        arraySum += parseInt(array[i], 10);
        
    }
    document.getElementById('displayLabel').innerHTML = "The sum of your numbers is: " + arraySum.toString() + ".";
}
<div class="col-md-4">  
  <label class="control-label">Enter Numbers Seperated by ",":</label>
  <br />
  <input type="text" id="sumMulti" class=" form-control" />            
  <button type="submit" onclick="sum()" class="btn btn-primary pull-right" style="margin:20px 60px 10px 0px;">Sum()</button>
  
  <div id="displayLabel" class="control-label"></div>
    
</div>