函数为input number*提供数组长度,而不是input number*数组值(javascript)

函数为input number*提供数组长度,而不是input number*数组值(javascript),javascript,Javascript,如果我使用数字5作为输入,我希望我的函数返回5*4*3*2*1。 问题是my for each循环返回5*5,这意味着输入乘以数组的长度,而不是输入乘以数组的值,它应该是4,3,2,1 function FirstFactorial(num) { var a = 1; var numbers = new Array(); for (var i = 0; i < num; i++){ numbers[i] = a; a++; } for (integer in numbe

如果我使用数字5作为输入,我希望我的函数返回5*4*3*2*1。 问题是my for each循环返回5*5,这意味着输入乘以数组的长度,而不是输入乘以数组的值,它应该是4,3,2,1

function FirstFactorial(num) {
var a = 1;
var numbers = new Array();

for (var i = 0; i < num; i++){
    numbers[i] = a;
    a++;
}

for (integer in numbers){
    factor = num * numbers[integer];
}    
return factor;    
}   

FirstFactorial(5);       
//EXPECTED OUTPUT: 5*4*3*2*1 = 120
那样做

function FirstFactorial(num){
   var result = 1;
   while(num > 0){
     result = num*result;
     num--;
   }
 return result;
}

将每个数字乘以函数参数,并在每次迭代中覆盖因子。您可能想在循环之前声明var factor=1,然后在循环内部声明do factor*=numbers[integer]以获得乐趣,ES6方法还使用了一个数组:function factn{return[…Arrayn.keys].reducep,c=>p*c+1,1}这没有给我任何输出。@ApoLLoSkiLLz这段代码对我来说似乎很好。你有什么错误吗?如果有的话,请把它们寄出去。哎呀!我忘了调用我的函数。你的代码工作得很完美。