2015-09-15 18 views

回答

0

尝试铸造nString,利用String.prototype.split()String.prototype.replace()Array.prototype.splice(),​​,do.. while

function baseNumber(n) {  
 
    var x = String(n).replace(/[^\d]/g, "").split(""), y = 0; 
 
    do { y += Number(x.splice(0, 1)) } while (!!x.length); 
 
    return y > 9 ? baseNumber(y) : y 
 
} 
 

 
console.log(baseNumber("abc12"), baseNumber("def235"))

2

如果你需要使用正则表达式(你也可以做同样的事情,而不正则表达式,并采用分体式)

function baseNumber(n){ 
    if (n > 9) 
     return baseNumber(n.toString().match(/(\d)/g).reduce(function(a, b) { return a + Number(b) }, 0)) 
    else 
     return n; 
} 

的减少确实的总结。比赛返回比赛的阵列(即数字)

如果你想处理小数和负数改变if (n > 9)检查if (n.toString().length > 1)

0

这个怎么样:

var input = 235; 
while(input > 9) input = String(input).match(/[\d]/g).reduce(function(sum, currentValue) { 
    return sum + parseInt(currentValue); 
}, 0); 
console.log(input); 
相关问题