Вернуть среднюю продолжительность жизни всех людей, округлённую до ближайшего целого. JS

Дан массив years содержащий годы жизни разных людей в виде строк в формате 1714-1748 (год роджения - год смерти).

Допиши функцию getAverageAge так, чтобы она возвращала среднюю продолжительность жизни всех людей, округлённую до ближайшего целого (Math.round). Функция 'getAverageAge' должна return 0 для пустого массива

Пример:

getAverageAge(['1832-1905', '1876-1956', '1683-1724', '1714-1748']) === 57

getAverageAge([
  '1907-1997',
  '1761-1833',
  '1535-1582',
  '1918-2012',
  '1877-1968',
  '1696-1724',
  '1602-1642',
  '1692-1743',
  '1695-1762',
  '1570-1636',
  '1762-1807',
  '1668-1731',
]) === 63

*************** то что получилось

function getAverageAge(years) {
  return Math.round(
    years.reduce((first, second) => second - first, 0) / years.length
  );
}

Ответы (1 шт):

Автор решения: vsemozhebuty

У вас немного неправильное использование reduce(). Попробуйте так:

function getAverageAge(years) {
  if (years.length === 0) return 0;
  
  const yearsSum = years.reduce(
    (sum, life) => {
      const [birth, death] = life.split('-').map(str => Number(str));
      return sum + (death - birth);
    },
    0,
  );
  return Math.round(yearsSum / years.length);
}

console.log(getAverageAge([
  '1832-1905', '1876-1956', '1683-1724', '1714-1748',
])); // === 57

console.log(getAverageAge([
  '1907-1997', '1761-1833', '1535-1582', '1918-2012', '1877-1968', '1696-1724',
  '1602-1642', '1692-1743', '1695-1762', '1570-1636', '1762-1807', '1668-1731',
])); // === 63

console.log(getAverageAge([])); // === 0

→ Ссылка