Давайте я хочу объяснить код и ответить на ваш вопрос.
Ваш вопрос связан с различием между вашим измененным кодом и исходным кодом, который использует метод `concat` для объединения элементов в результирующий массив.
В исходном коде метод `reduce` используется для объединения всех элементов в результирующий массив, используя рекурсию.
В вашей модифицированной версии вместо использования метода `concat`, вы используете метод `push` для добавления элементов в результирующий массив.
Оба варианта корректны и дают одинаковый результат.
Теперь, касательно вашего вопроса. В исходном коде, рекурсивная функция `flatten` вызывается для каждого элемента на каждой итерации метода `reduce`. Если элемент является массивом, функция `flatten` вызывается с этим массивом в качестве аргумента, а затем метод `concat` используется для объединения результатов рекурсивных вызовов функции `flatten` с текущим значением аккумулятора.
В вашей модифицированной версии, если элемент является числом, его просто добавляют в результативный массив. Если элемент является массивом, функция `flatten` вызывается рекурсивно, и результаты добавляются в результативный массив с помощью оператора `...`, расширяющего элементы массива.
Таким образом, вы правильно запрограммировали вашу модифицированную версию `flatten` функции, и она будет работать так же, как исходный код с использованием метода `concat`.