Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数内的重叠循环_Javascript_Arrays_Function_Loops - Fatal编程技术网

Javascript 函数内的重叠循环

Javascript 函数内的重叠循环,javascript,arrays,function,loops,Javascript,Arrays,Function,Loops,在代码战中,我正在接受乘法逆的项目训练。例如,目标是——如果输入是“39”,那么输出应该是“4”[39=3*9=>27=2*7=>14=1*4=>4]。 我编写了一些代码,只将输入乘以第一级(39=>27) 我的代码到现在为止 function persistence(num) { var digits = new Array(); digits = num.toString().split("").map(Number); var res = 1; for (i = 0; i < di

在代码战中,我正在接受乘法逆的项目训练。例如,目标是——如果输入是“39”,那么输出应该是“4”[39=3*9=>27=2*7=>14=1*4=>4]。 我编写了一些代码,只将输入乘以第一级(39=>27)

我的代码到现在为止

function persistence(num) {

var digits = new Array();
digits = num.toString().split("").map(Number);
var res = 1;
for (i = 0; i < digits.length; i++) { res = res * digits[i]; }
return res;
console.log(persistence(digits));

}
函数持久性(num){
var digits=新数组();
digits=num.toString().split(“”).map(数字);
var-res=1;
对于(i=0;i
我只是在学习javascript,我被困在这里了。我需要循环这个过程,直到得到一个位数

有人能帮我吗?
如果我的问题不清楚,很抱歉…

数组方法是您的朋友。在这种情况下,使用
map
reduce

函数多数字(num){
如果(num<10)返回num;
console.log(num);
常数乘以=字符串(num)
.拆分(“”)
.地图(编号)
.减少((a,n)=>a*n,1);
返回多数字(乘以);
}

控制台日志(多数字(39))数组方法是您的朋友。在这种情况下,使用
map
reduce

函数多数字(num){
如果(num<10)返回num;
console.log(num);
常数乘以=字符串(num)
.拆分(“”)
.地图(编号)
.减少((a,n)=>a*n,1);
返回多数字(乘以);
}

控制台日志(多数字(39))除了格式化之外,这与您的代码非常相似。我评论了仅有的两个变化:

函数持久性(num){
var digits=新数组();
digits=num.toString().split(“”).map(数字);
//1)添加此if语句以返回结果
//如果只有一个数字,则立即。
如果(位数.length==1)
返回数字[0];
var-res=1;
对于(i=0;iconsole.log(persistence('39'))除了格式化之外,这与您的代码非常相似。我评论了仅有的两个变化:

函数持久性(num){
var digits=新数组();
digits=num.toString().split(“”).map(数字);
//1)添加此if语句以返回结果
//如果只有一个数字,则立即。
如果(位数.length==1)
返回数字[0];
var-res=1;
对于(i=0;iconsole.log(persistence('39'))你只需要一个while循环来包装这个方法,你可以保持你的代码的原样,让你的return语句像这样
returnnum<10?num:持久性(res)。您的函数仍将运行,但不会错过它所花费的一秒钟。您只需要一个while循环来包装此方法您可以保持代码的原样,并按照下面的方式创建return语句
return num<10?num:持久性(res)。您的函数仍将运行,但不会错过它所需的那一秒。