[英]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 reduce , MDN 上有一個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.