如何使用JavaScript查找字符串中的整数和

时间:2016-08-30 20:41:21

标签: javascript expression sum-of-digits

我使用正则表达式创建了一个函数,然后通过将先前的总数添加到数组中的下一个索引来迭代数组。

我的代码不起作用。我的逻辑关闭了吗?忽略语法

width: 100%

3 个答案:

答案 0 :(得分:1)

你有一些错误:

使用var patrn = \\D

更改var patrn = "\\D"

使用parseInttotal += parseInt(tot);

function sumofArr(arr){ // here i create a function that has one argument called arr
var total = 0; // I initialize a variable and set it equal to 0 
var str = "12sf0as9d" // this is the string where I want to add only integers
var patrn = "\\D"; // this is the regular expression that removes the letters
var tot = str.split(patrn) // here i add split the string and store it into an array with my pattern

arr.forEach(function(tot){ // I use a forEach loop to iterate over the array 
total += parseInt(tot); // add the previous total to the new total
})
return total; // return the total once finished
}

alert(sumofArr(["1", "2", "3"]));

https://jsfiddle.net/efrow9zs/

答案 1 :(得分:1)

var patrn = \\D; // this is the regular expression that removes the letters

这不是JavaScript中的有效正则表达式。

您在代码的末尾也缺少结束括号。

一个更简单的解决方案是找到字符串中的所有整数,将它们转换为数字(例如使用+运算符)并将它们相加(例如使用reduce运算)。

var str = "12sf0as9d";
var pattern = /\d+/g;
var total = str.match(pattern).reduce(function(prev, num) {
  return prev + +num;
}, 0);

console.log(str.match(pattern)); // ["12", "0", "9"]
console.log(total);              // 21

答案 2 :(得分:0)

convert

sumofArr( “12sf0as9d”);