簡體   English   中英

Javascript添加以逗號分隔的數字

[英]Javascript to add the numbers delimited by comma

我正在嘗試獲取文本框中所有整數的總和。 數字以逗號分隔。 我需要將數字相加並得到它們的總和。可悲的是,我無法得到它們。

我的代碼是:

 <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假設數字是 base-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]);
        }

考慮:

var data = '1,2,3';

eval(data.split(',').join('+'))); // 6

要么

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

編輯

對於所有那些反對評估的人(你知道你是誰!!):

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

請注意,需要支持ES5 reduceMDN 上有一個polyfill

我喜歡 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM