Javascript .reduce () - PullRequest
       0

Javascript .reduce ()

0 голосов
/ 04 марта 2020

Я делаю freeCodeCamp JavaScript. У меня вопрос: Basi c Алгоритм сценариев: факториализация числаPassed

Вот код, который я написал:

function factorialize(num) {
  let arr = [];
  let reducer = (accumulator, currentValue) => accumulator * currentValue;
  for (let i = 1; i < num + 1; i++) {
    let newArr = arr.push(i);
  }
  return newArr.reduce(reducer);
}
factorialize(5);

Вот моя проблема: консоль говорит это:

ReferenceError: newArr не определено

Почему говорится, что newArr не определено? Я определил это! Я относительно новичок в кодировании, и я действительно хочу учиться. Пожалуйста, помогите мне.

Ответы [ 3 ]

2 голосов
/ 04 марта 2020
  1. Вам вообще не нужно newArr.

  2. Array.prototype.push возвращает длину массива.

  3. Невозможно получить переменную, объявленную с помощью let в выражении for, что вызвало ошибку.

function factorialize(num) {
  let arr = [];
  let reducer = (accumulator, currentValue) => accumulator * currentValue;
  for (let i = 1; i < num + 1; i++) {
    arr.push(i);
  }

  return arr.reduce(reducer);
}
console.log(factorialize(5));
0 голосов
/ 04 марта 2020

Вы можете использовать рекурсию вместо Reduce, если хотите:

function factorialize(num) {
   while (num  > 1) {
     return num * factorialize(num - 1);
        }
    return num;
  }
0 голосов
/ 04 марта 2020

вы можете просто сделать это

const factorialize=num=>Array(num).fill(1).reduce((a,_,i)=>a*++i)

console.log('5! ->', factorialize(5) )
console.log('3! ->', factorialize(3) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...