Javascript添加以逗号分隔的数字

Javascript to add the numbers delimited by comma

本文关键字:分隔 数字 添加 Javascript      更新时间:2023-09-26

我试图获得文本框内所有整数的总和。数字之间用逗号分隔。我需要把这些数相加,得到它们的和。可惜我不能得到它们。

我的代码是:
 <script type="text/javascript">
        function computeData()
        {
            var data = document.getElementById("data").value;
            var temp = data.split(",");
            for( i=0; i<temp.length; i++)
            var k=0;
            {
                var j = temp[i];
                k  = k + j;
                alert(k);
            }
            document.getElementById("sum").value= k;
        }
    </script>

您需要使用parseInt:

将字符串解析为整数。
> 2 + '3'
'23'
> 2 + parseInt('3', 10)
5

10告诉parseInt假设这个数是以10为底。如果您有浮点数,请使用parseFloat()(不需要指定基数):

> 2 + parseFloat('3.13')
5.13

如果你知道它们是整数:

var data = document.getElementById("data").value;
var sum = data.split(",").reduce(function(prev, curr){
    return parseInt(prev,10) + parseInt(curr,10);
 });

如果你对整数不确定,你可以使用parseFloat来代替parseInt。

请注意,这可能在较旧的浏览器中不起作用。如果你需要支持IE9之前的IE,你可能只需要在你的循环中使用parseInt/parseFloat。(将k声明移出循环)

var k=0;
for( i=0; i<temp.length; i++)
{
     var j = temp[i];
     k  = k + parseInt(j,10);
     alert(k);
}

这可以在整数或浮点的CSV字符串上工作。

var data = document.getElementById("data").value;
var a = data.match(/'d+(?:[.]'d+)?/g);
var num = 0;
a.forEach(function(n){
    num += parseFloat(n);
});
console.log(num);

我还建议使用以下语法

        var temp = data.split(",");
        for(var i=0, k=0; i<temp.length; i++;)
        {
            k += parseInt(temp[i]);
        }

我喜欢eval的想法,但是您也可以使用正则表达式来匹配和合计整数和小数,以及任何正负号。非数字将被忽略,因此您可以使用逗号或空格分隔,或者在数字之间使用'+'或'-'。

function computeData(){
    var data= document.getElementById("data").value;
    var rx=/([+-]?('.'d+|'d+('.'d+)?))/g, n= 0, M;
    while((M= rx.exec(data))!= null){
        n+= (+M[1])
    }
    document.getElementById("sum").value= n;
}

考虑:

var data = '1,2,3';
eval(data.split(',').join('+'))); // 6

eval(data.replace(/,/g,'+')); // 6

编辑

对于那些讨厌eval的人(你知道你是谁!!):

var sum = data.split(',').reduce(function(p, c){return p + +c},0);

注意支持ES5 reduce是必需的,在MDN上有一个polyfill。

相关文章: