I created a function with a regular expression and then iterated over the array by adding the previous total to the next index in the array.
My code isn't working. Is my logic off? Ignore the syntax
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 += tot; // add the previous total to the new total
}
return total; // return the total once finished
}
you have some errors :
change var patrn = \\\\D
with var patrn = "\\\\D"
use 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"]));
var patrn = \\D; // this is the regular expression that removes the letters
This is not a valid regular expression in JavaScript.
You are also missing a closing bracket in the end of your code.
A simpler solution would be to find all integers in the string, to convert them into numbers (eg using the +
operator) and summing them up (eg using a reduce
operation).
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
function sumofArr(str) {
var tot = str.replace(/\D/g,'').split('');
return tot.reduce(function(prev, next) {
return parseInt(prev, 10) + parseInt(next, 10);
});}
sumofArr("12sf0as9d");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.