Большинство вариантов использования метода reduce() можно легко переписать с помощью цикла for. И тестирование на JSPerf показывает, что reduce() обычно на 60-75% медленнее, в зависимости от операций, выполняемых внутри каждой итерации.
Есть ли в таком случае реальная причина использовать reduce(), кроме возможности писать код в «функциональном стиле»? Если вы можете увеличить производительность на 60 %, написав немного больше кода, зачем вам вообще использовать метод reduce()?
РЕДАКТИРОВАТЬ: На самом деле, другие функциональные методы, такие как forEach() и map(), демонстрируют одинаковую производительность, будучи как минимум на 60% медленнее, чем простые циклы for.
Вот ссылка на тест JSPerf (с вызовами функций): forloop vs forEach