Моя средняя функция возвращает nan, если нет аргументов. Как я могу получить вместо него 0? - PullRequest
0 голосов
/ 02 мая 2018

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

function average(...numbers) {
let avg = 0;
for(let num of numbers) {
    avg += num;
    }
avg = avg / numbers.length;
return avg;
}

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());

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Если вы не хотите явно писать специальный случай, вместо этого вы можете использовать функцию короткого замыкания логического оператора AND &&:

function average(...values) {
  const { length } = values
  let avg = 0

  for (const value of values) {
    avg += value
  }

  return length && avg / 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 голосов
/ 02 мая 2018

Среднее значение нуля не определено по определению, поэтому получение NaN вполне ожидаемо.

Но если вы настаиваете на получении 0 в этом случае, вам понадобится специальный случай, например, if (numbers.length == 0) return 0;

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