2015-09-15 52 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); 
相關問題