我使用正则表达式创建了一个函数,然后通过将先前的总数添加到数组中的下一个索引来迭代数组。
我的代码不起作用。我的逻辑关闭了吗?忽略语法
width: 100%
答案 0 :(得分:1)
你有一些错误:
使用var patrn = \\D
var patrn = "\\D"
使用parseInt
:total += 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"]));
答案 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”);