Вернуть среднюю продолжительность жизни всех людей, округлённую до ближайшего целого. 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