Instructions
Your task in this kata is to implement a function that calculates the sum of the integers inside a string.
For example:
Input --> "The30quick20brown10f0x1203jumps914ov3r1349the102l4zy dog"
Output --> 3635.
My solution:
function sumOfIntegersInString(s){
return s
.split(/([^0-9])/g)
.map(x => parseInt(x) )
.filter(Boolean)
.reduce((acc,el)=> acc+el,0)
}
Explanation
First I splitted the string using a regex that matches the elements that are not numbers, so everytime an element is not a number it'll split.
Input --> 'h3ll0w0rld'
Output --> ['', 'h', '3', '1', '', 'l', '0', 'w', '0', 'r', '', 'l', '', 'd', '']
After that I converted every string element in the array to a number
Input --> ['', 'h', '3', '1', '', 'l', '0', 'w', '0', 'r', '', 'l', '', 'd', '']
Output --> [NaN, NaN, 3, NaN, NaN, NaN, 0, NaN, 0, NaN, NaN, NaN, NaN, NaN, NaN]
After that I filtered the array and I used Boolean so I would get every falsy element removed
Input --> [NaN, NaN, 3, 1, NaN, NaN, 0, NaN, 0, NaN, NaN, NaN, NaN, NaN, NaN]
Output --> [3,1]
At the end I just used .reduce() so I could sum all of the numbers left in the array
Input --> [3,1]
Output --> 4
What do you think about this solution? ππ€
Top comments (0)