@Dmasgj

Почему при решении задачи я получаю undefined?

Дана задача :
Дан массив целых чисел.

Верните новый массив , где первый элемент — это количество положительных чисел, а второй элемент — сумма отрицательных чисел. 0 не является ни положительным, ни отрицательным.

Если input представляет собой пустой массив или имеет значение null, верните пустой массив.

Вот моё решение :
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -11, -12, -13, -14, -15];
  
  function countPositivesSumNegatives(input) {
    // your code here
    let newArr = [];
    let positiveCount = 0;
    let summOfNegativeCount = 0;

    input.forEach(el => {
        if (input === [] || null) {
            return [];
        }
        if (el > 0) {
            positiveCount++;
        } 
        else {
            summOfNegativeCount += el;
        }
        
        return newArr += positiveCount, summOfNegativeCount;
        
  });
  }
  console.log(countPositivesSumNegatives(arr));


По итогу получаю значение undefined, помогите понять почему получается именно это значение?
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
morsa
@morsa
Frontend-разработчик
Здравствуйте!
Немного переписал ваш код.
function countPositivesSumNegatives(input) {
  // your code here
  let positiveCount = 0;
  let summOfNegativeCount = 0;

  if (input.length === 0) {
    return [];
  }

  input.forEach((el) => {
    if (el > 0) {
      positiveCount += 1;
    }
    if (el < 0) {
      summOfNegativeCount -= -el;
    }
  });

  return [positiveCount, summOfNegativeCount];
}


1. Undefined Вы получаете потому что из функции ничего не возвращаете.
2. Терминальное условие пишите в самом начале функции, а не в цикле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы