Sobes.tech
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 скрывает эту логику. Также встроенный метод может быть более производительным и безопасным для больших массивов.