目标:拿一个像54321这样的数字,把数字加在一起(5 + 4 + 3 + 2 + 1 = 15),然后取这个数字(15)添加数字(1 + 5 = 6),所以返回6;减少一位数字到一位数字 - 请不要回答
这里是我的代码:
function digital_root(n) {
if (n >=10) {
var digits = n.toString().split('').map(function(item, index) {return parseInt(item)}).reduce(function(a,b){ return a+b});
console.log(digits);
}
}
digital_root(1632)
想不通:如何获得该功能重复一遍又一遍,直到数字仅仅是一个数字(即小于10)。我尝试了各种嵌套函数,但似乎无法做到。
如果可能,请指出解决方案的方向(“尝试嵌套在一段时间......或阅读......”),但不要给我完整的代码解决方案(“使用此代码块:....“)。我养成了只读和复制的坏习惯...
谢谢!
我的第一个对非专家的建议是摆脱“地图”。即使对于有很多经验的人来说,地图通常在概念上也很具挑战性相反,尝试一个显式循环,在找到数字时需要使用'/ 10'和'%10'。祝你好运。 –
谢谢!我会尝试和nix的地图,并按照你的建议循环工作! – Megan