Javascript 使用.reduce()分解数字

Javascript 使用.reduce()分解数字,javascript,arrays,function,mapreduce,factorial,Javascript,Arrays,Function,Mapreduce,Factorial,我正在尝试编写一个函数,该函数将生成所提供整数的阶乘,然后减少阶乘数组(通过将每个数组元素相乘) 例如: 系数(5)>>>[1,2,3,4,5]>>>1*2*3*4*5>>>>120 var array = [ ]; function factor(num) { for (i = 1; i <= num; i++) { array.push(i); } array.reduce(function(a, b) { return a * b; }) };

我正在尝试编写一个函数,该函数将生成所提供整数的阶乘,然后减少阶乘数组(通过将每个数组元素相乘)

例如:

系数(5)>>>[1,2,3,4,5]>>>1*2*3*4*5>>>>120

var array = [ ];

function factor(num) {
  for (i = 1; i <= num; i++) {
    array.push(i);
  }  
  array.reduce(function(a, b) {
    return a * b;
  })
};

factor(5);
var数组=[];
功能因子(num){

对于(i=1;i尝试传递reduce的
初始值

array.reduce(function(a, b) {
    return a * b;
},1);
还可以从
函数
返回
数组
的缩减值

function factor(num) {
  for (i = 1; i <= num; i++) {
    array.push(i);
  }  
  return array.reduce(function(a, b) {
    return a * b;
  },1)
};

console.log(factor(5));
功能因子(num){

对于(i=1;i您的问题,您的函数实际上没有返回任何值,而这样一个函数的“返回”值是
未定义的

function factor(num) {
    for (i = 1; i <= num; i++) {
        array.push(i);
    }   
    array.reduce(function(a, b) {
        return a * b; // <-- Here is probably your misunderstanding
    });
};
功能因子(num){
对于(i=1;i
.reduce()
不是返回预期结果所必需的。请尝试使用单个
for
循环

var数组=[];
函数因子(num){
for(var i=1,res=1;i)
使用数组索引,如果有人不想用有序数字填充数组,则减少

num=10;
数组(num).fill(null).reduce((acc,val,i)=>{
如果(i==0){
返回1;
}
返回acc*(i+1);
}, 1)

您的函数不会返回任何内容。。。