如何计算字符串中的数字

时间:2015-04-08 00:06:28

标签: javascript jquery

我有这样的字符串13-2-10-7-3,其中的数字由-分隔。

我想知道在javascript中从字符串中计算所有数字sum的最佳方法是什么?

5 个答案:

答案 0 :(得分:2)

这是一个用-分割字符串的函数。然后浏览所有结果并添加它们。

function add(string){ 
    return string.split('-').reduce(function(a,b){return+a+(+b); });  
}

这将使用正则表达式从字符串中提取数字。然后它将使用.reduce()添加它们。不要复杂。 +a+(+b)会将ab转换为JavaScript数字,然后添加它们。 +var将从字符串变为数字变量。据我所知,这是你可以实现的最短方法。

如果您不支持.reduce()功能,请使用应支持每个浏览器的备用代码:

function add(string) {
    var strings = string.split('-'),
        sum = 0,i;
    for (i = 0; i < strings.length; i +=1 ) {
        sum += (+strings[i]);
    }
}

速度:~0.062秒

Fiddle

答案 1 :(得分:1)

由于数字始终以-分隔,因此最佳方法是分割为数组:

About string's split method

var numbers = "13-2-10-7-3";
numbers = numbers.split("-");

此时numbers将是一个字符串数组,您无法对它们进行求和,否则您只需将它们连接在一起即可。所以你应该将它们转换为数字。

这很容易映射数组元素到数字

About array's map method

numbers = number.map(Number);

现在你可以将>数组减少到其元素之和

About array's reduce method

var result = numbers.reduce(function (a, b) { return a + b; });

答案 2 :(得分:0)

var sum = "13-2-10-7-3".split('-').reduce(function(x, y) {
    return parseInt(x)+ parseInt(y);
});

答案 3 :(得分:0)

试试这个:

&#34;分裂&#34; function将delimitedNumbers字符串转换为字符串数组。使用&#34; - &#34;确定分割的位置。

从概念上讲,数字变量看起来像[&#34; 13&#34;] [&#34; 2&#34;] [&#34; 10&#34;] [&#34; 7&#34;分裂后的[&#34; 3&#34;]。

然后我们循环遍历数字数组,使用parseInt函数将每个元素从字符串转换为数字,然后添加到sum变量的当前值。

最后,我们召唤一个警告弹出窗口以显示最终总和。

  sum = function(){
    var i, len, delimitedNumbers, numbers, sum;

    delimitedNumbers = "13-2-10-7-3";

    numbers = delimitedNumbers.split('-');
    len = numbers.length;

    sum = 0;
    for(i = 0; i < len; i++)
    {
        sum = sum + parseInt(numbers[i]);
    }

    alert("The sum is: " + sum);
  } 

JSFiddle

答案 4 :(得分:0)

reduce()需要IE9 +

我在这里使用jQuery.each

var input = '13-2-10-7-3', sum = 0;


$.each(input.split('-'), function(idx, elm) {
  sum += (+elm); // parse string to int using `+` 
});

document.write('The sum of ' + input + ' is ' + sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>