Javascript 减少功能后不起作用?

标签 javascript arrays function reduce

不太确定我哪里出错了,期望通过将 5 变成 [1,2,3,4,5] 的字符串来对 5 (1*2*3*4*5 = 120) 进行因式分解,并且然后使用 reduce 将字符串全部相乘。当我运行代码时,它只会给我 [1,2,3,4,5]...

 var arr = [];

function factorialize(num) {

 for (var i = 1; i <= num; i++) {
  arr.push(i);
}
  return arr;
}

var factors = 0;

factors = arr.reduce(function(previousVal, currentVal) {
  return previousVal * currentVal;
}, 0); // Expecting 120, instead result = [1,2,3,4,5]

factorialize(5);

请原谅这条漫长的路——我第一周的 Javascript!

最佳答案

arr 为空,应该先给它因式分解的结果数组,并且应该乘而不是加,并且乘时起始值为1而不是0:

var arr = [];

function factorialize(num) {
  for (var i = 1; i <= num; i++) {
    arr.push(i);
  }
  return arr;
}

arr = factorialize(5); // give it the value

var factors = arr.reduce(function(previousVal, currentVal) {
  return previousVal * currentVal; // multiply, don't add
}, 1); // start with 1 when multiplying

console.log(arr);
console.log(factors);

如果您只想计算阶乘:

function factorial(num) {
  var res = 1;
  for (var i = 2; i <= num; i++) {
    res *= i;
  }
  return res;
}
console.log('factorial(5) = ' + factorial(5));
console.log('factorial(10) = ' + factorial(10));

关于Javascript 减少功能后不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49431623/

相关文章:

javascript - 强制 NULL 在 javascript 中产生不同的结果

php foreach 与 sql

python - numpy - 计算沿第一个轴的两个数组之间的 "element-wise"差异

PowerShell 中的函数参数

c++ - C++ 原型(prototype)设计

javascript - 动态访问变量

javascript - Angular Material : Nested grid

c - 我在带有分隔符的文本文件中有一组值如何使用 C 编程修改值

function - 如何在 bashrc 中创建一个函数来接受参数?

javascript - Angular 错误: Uncaught Error: [$injector:modulerr] Failed to instantiate module