Back to questions
Аэрофлот
Middle+
4
В чём отличие в поведении метода reduce у массива и представленной кастомной рекурсивной функции reduce?
Companies where asked
Answer from AI
sobes.tech AI
Метод reduce у массива в JavaScript — это встроенный метод, который последовательно применяет функцию-аккумулятор ко всем элементам массива, аккумулируя результат.
Кастомная рекурсивная функция reduce может отличаться по поведению в следующих аспектах:
- Рекурсивность vs Итеративность: Встроенный
reduceреализован итеративно и оптимизирован, а рекурсивная функция вызывает себя для обработки следующего элемента. - Обработка пустого массива: Встроенный
reduceбез начального значения выбрасывает ошибку на пустом массиве, рекурсивная функция может быть написана с другой логикой. - Стек вызовов: Рекурсивная функция может привести к переполнению стека при больших массивах, встроенный
reduce— нет.
Пример кастомного рекурсивного reduce:
function recursiveReduce(arr, fn, acc, index = 0) {
if (index >= arr.length) return acc;
return recursiveReduce(arr, fn, fn(acc, arr[index], index, arr), index + 1);
}
const sum = recursiveReduce([1, 2, 3, 4], (acc, val) => acc + val, 0);
console.log(sum); // 10
Отличие в том, что рекурсивная версия явно управляет индексом и вызывает себя, а встроенный reduce скрывает эту логику. Также встроенный метод может быть более производительным и безопасным для больших массивов.