逗号分隔字符串的总和

3
我有一个字符串: string = "Green 3, Red 5, Blue 6, ";
我想把数字值加在一起,也就是说这个字符串的答案应该是:3 + 5 + 6 = 14。
我已经从字符串中删除了非数字值,但找不到将数字相加的方法!
var string = string.replace(/\D/g,""); 到目前为止我得到的是356而不是14!

string.match(/\d+/g) 然后将数组元素相加。 - Avinash Raj
4个回答

3

使用 string.prototype.matcharray.prototype.reduce

var string = "Green 3, Red 5, Blue 6, "
var result = string.match(/\d+/g).reduce(function(a,b) {return +a + +b;});

这相当于

var string = "Green 3, Red 5, Blue 6, "
var array = string.match(/\d+/g);
var result = array.reduce(function(a,b) {
    return +a + +b;
});

0

以下是一种实现方式:

string.split(',').reduce(function(sum, cur) {
  var n = cur.match(/(\d+)/);
  return sum + (n && parseInt(n[1],10) || 0);
}, 0);
//=> 14

0
<html>
<head>
    <title>Please Rate Me If this helps you...</title>
    <script>
    window.onload = function () {
        var string = "Green 3, Red 5, Blue 6";
        var separeted = string.split(",");
        var sum = 0;
        for (var i = 0; i < separeted.length; i++) {
            sum += parseInt(separeted[i].toString().match(/(\d+)/));
        }
        alert(sum);
    }
    </script>
</head>
<body>
</body>
</html>

更新 sum += separeted[i].toString().match(/(\d+)/) != null ? parseInt(separeted[i].toString().match(/(\d+)/)) : 0; - Parth Patel
reduce是ECMAScript 2015提供的一个很好的选项。 - Yellow Digital Labs

0
试试这个...希望能帮到你
<span id="foo">280ms</span>
<span>sum:</span><span id="spid"></span>

var text = $('#foo').text();
output = text.split(","),
var sum = 0;
    for (var i = 0; i < output.length; i++) {
        sum += parseInt(output[i].toString().match(/(\d+)/));
    }
$("#spid").text(sum)

更新的Fiddle


这个所需的输入“Green 3, Red 5, Blue 6, ”无法工作。 - Andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接