Метод push() внутри reduce() ругается на undefined внутри себя, как исправить?

В методе push() внутри reduce() возникает ошибка undefined из-за того, что в начальном значении аккумулятора не указано исходное значение, и поэтому первое значение, передаваемое в метод push(), равно undefined. Чтобы исправить эту ошибку, вам необходимо задать начальное значение для аккумулятора в reduce().

Вот пример кода, который демонстрирует исправление этой проблемы:

const arr = [1, 2, 3];
const result = arr.reduce((acc, curr) => {
  acc.push(curr);
  return acc;
}, []);

console.log(result);

В данном примере мы используем пустой массив [] в качестве начального значения аккумулятора в reduce(). Теперь метод push() будет вызываться с корректным начальным значением, и ошибка undefined больше не возникнет.

Если у вас уже есть начальное значение аккумулятора, и вы не можете использовать пустой массив, то вам необходимо проверить каждое значение перед добавлением его в аккумулятор на равенство undefined. Вот пример кода, демонстрирующий такой подход:

const arr = [1, undefined, 2, 3];
const result = arr.reduce((acc, curr) => {
  if (typeof curr !== 'undefined') {
    acc.push(curr);
  }
  return acc;
}, []);

console.log(result);

В этом примере мы проверяем curr на равенство undefined перед его добавлением в аккумулятор. Если значение curr не равно undefined, то мы добавляем его в аккумулятор с помощью метода push(). Таким образом, мы исключаем значения undefined из результата.

Исправление ошибки undefined в методе push() внутри reduce() зависит от ваших конкретных потребностей и логики вашей программы. Вы можете выбрать один из предложенных вариантов или адаптировать подход в соответствии с вашими требованиями.