Средний массив с параметром (... rest) - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь написать функцию для вычисления среднего числа элементов в массиве, используя параметр (... rest)

Вот что я пробовал:

function average(...nums) {
  let total = 0;
  
  for (const num of nums) {
    total += num;
  }
  
  return total / nums.length;
}

console.log(average(2, 6));
console.log(average(2, 3, 3, 5, 7, 10));
console.log(average(7, 1432, 12, 13, 100));
console.log(average());

Но последний тест возвращает NaN, и я не знаю почему.

Ответы [ 3 ]

1 голос
/ 26 сентября 2019

Поскольку вы пытаетесь разделить 0 (total) на 0 (nums.length, где nums равно []), что в JavaScript равно NaN.

В верхней части вашей функции может быть проверка, которая возвращает значение по умолчанию (скажем, 0), если список пуст:

function average(...nums) {
    if (!nums.length) return 0;
    let total = 0;
    // rest
}
0 голосов
/ 26 сентября 2019

Проверьте, что аргумент, представляющий собой массив, существует, если не возвращает 0 или какое-либо значение, указывающее, что среднее значение не может быть вычислено.

function average(...nums) {
  if (!nums.length) {
    return 'Cannot find average'
  }
  let total = 0;
  for (const num of nums) {

    total += num;
  }
  return total / nums.length;
}

console.log(average(2, 6));
console.log(average(2, 3, 3, 5, 7, 10));
console.log(average(7, 1432, 12, 13, 100));
console.log(average());
0 голосов
/ 26 сентября 2019

Вы возвращаете 0/0 (то есть NaN), когда ничего не передаете, так как nums становится пустым массивом.и его длина становится 0.

Вы должны вернуть nums.length ? total/nums.length : 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...