Неопределенный вывод при использовании «уменьшить» для умножения массива чисел - PullRequest
0 голосов
/ 24 октября 2019

При умножении массива чисел примерно так, я получаю ожидаемый результат:

 const numbers = [2, 5, 3];
 return numbers.reduce((a, b) => a * b);

Однако, когда я изначально написал свой оператор Reduce (как показано ниже), я получил вывод "undefined". Я думаю, что это связано со значением 0, с которым я сею уменьшение.

return numbers.reduce((a, b) => {
      a * b;
    }, 0);

Я не до конца понимаю, что происходит для вывода «неопределенного». Если бы кто-нибудь мог просветить меня в этом, я был бы очень благодарен.

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Во второй форме вы используете фигурные скобки {} в своей функции стрелки, которая не имеет неявного return. При использовании фигурных скобок вам необходимо явно return:

const numbers = [2, 5, 3];

const test = numbers.reduce((a, b) => {
   return a * b;
}, 0);

console.log(test);

РЕДАКТИРОВАТЬ

Как указывалось в различных комментариях, это устраняет проблему с результатом undefined, нооно все равно будет 0, потому что вы присваиваете начальное значение как 0, а 0 раз, когда все равно 0. Вы можете просто пропустить это (или заменить его на 1), чтобы получить произведение всех возвращаемых элементов в массиве:

const numbers = [2, 5, 3];

const test = numbers.reduce((a, b) => {
   return a * b;
});

console.log(test);
1 голос
/ 24 октября 2019

Вы должны изменить 0 на 1, так как любое число, умноженное на 0, равно 0:

return numbers.reduce((a, b) => a * b, 1);
...