function NumberSearch(str) {
var arr = str.split("");
var sum = 0;
var twoDigit = [];
var two;
var res = [];
var arrFormat = preProcess(arr);
console.log(arrFormat);
//this function returns an array that has all numbers from the string
function preProcess(ele) {
for (var i = 0; i < ele.length; i++) {
if (typeof ele[i] === 'number' && typeof ele[i + 1] === 'number') {
twoDigit.push(ele[i], ele[i + 1]);
two = twoDigit.join("");
res.push(two);
} else {
if (typeof ele[i] === 'number' && typeof ele[i + 1] !==
'number') {
res.push(ele[i]);
}
}
}
return res;
}
for (var k = 0; k < arrFormat.length; k++) {
sum = sum + arrFormat[k];
}
return sum;
}
console.log(NumberSearch("99Hello1"));
我试图通过首先循环字符串并收集所有数字然后总结来解决问题。
您可以使用正则表达式来匹配数字并减少获取的数组。
function sum(string) {
return (string.match(/\d+/g) || []).reduce(function (a, b) { return a + +b; }, 0)
}
console.log(['99hello1', '9hello9'].map(sum));
您也可以通过一个简化阶段执行此工作。
var s = Array.prototype.reduce.call("99Hello9", (r,c) => isNaN(+c) ? r : +c+r, 0);
console.log(s);