На днях, когда я писал статью для Rest Operator, один друг сказал мне, что один из моих примеров можно упростить вызовом функции reduce().
Вот рассматриваемый пример,
const multiply = (...args) => { let result = 1; for (let i in args) { result = result * args[i]; } return result; }; multiply(2,2,2) // 8
Я попытаюсь использовать метод reduce() и упростить приведенный выше пример, чтобы сделать его еще более понятным.
Функция уменьшить():
Метод Array.reduce() выполняет функцию редуктора (которую мы предоставляем) в каждом элементе массива, в результате чего получается одно выходное значение.
Поэтому перед его использованием мы должны определить нашу функцию reducer(), которая будет иметь два аргумента (accumulator, currentValue).
Аргумент накопитель — это значение, которое мы получим в итоге.
Аргумент currentValue — это действие, которое мы собираемся выполнить, чтобы получить одно выходное значение.
Определение функции reducer(),
const reducer = (accumulator, currentValue) => { return accumulator * currentValue; };
Array.reduce()принимает два аргумента (обратный вызов, initialValue)
Обратный вызов — это наша функция reducer().
Параметр initialValue является необязательным, значение по умолчанию равно 0.
Переписывая нашу функцию умножения,обратный вызов — это функция reducer(), которую мы определили ранее, начальное значение равно 1, потому что мы хотим умножить на 1 в первой итерации, если мы умножим на 0, весь результат будет 0.
let multiply = (...args) => args.reduce((accumulator, currentValue) => { return accumulator * currentValue; }, 1);
Мы можем упростить его еще больше, вызвав функцию reducer() напрямую.
let multiply = (...args) => args.reduce(reducer, 1);
Функция reduce() очень проста, делает ваш код более чистым и упрощает использование массивов.
Большое спасибо и продолжайте кодировать!!!
Йоэль
Я часто делюсь советами по программированию в моем Instagram, вы можете поздороваться со мной в моем Twitterили посмотреть, как я программирую в моем Гитхаб.