Вход

Просмотр полной версии : Помогите:Не работает callback в arr.reduce()


один
02.04.2021, 22:03
Задача из учебника Кантора, раздел "Методы массивов":
Получить средний возраст: Напишите функцию getAverageAge(users) , которая принимает массив объектов со свойством age и возвращает средний возраст.
let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 29 };
let arr = [ vasya, petya, masha ];

ТАК РАБОТАЕТ:
function getAverageAge(users) {
return users.reduce((prev, user) => prev + user.age, 0) / users.length;
}

ТАК НЕ РАБОТАЕТ(возвращает NaN):
function getAverageAge(users) {
return users.reduce(function (prev, user) {
prev + user.age;},0) / users.length;
}

ПОЧЕМУ НЕ РАБОТАЕТ?
Ведь все то же самое, кроме формы функции?:cray:
ПАМАГИТЕ бедному школьнику понять!!:cray:

ksa
02.04.2021, 22:33
Ведь все то же самое, кроме формы функции?
Ты если что-то пишешь - пиши полностью...

let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 29 };
let arr = [ vasya, petya, masha ];

alert(getAverageAge(arr))

function getAverageAge(users) {
return users.reduce(
function (prev, user) {
return prev + user.age;
},
0
) / users.length;
}


А то взял первое... Добавил часть второго... Потом спрашиваешь почему не работает?!!!
Второе нужно писать полностью, а не только его первую часть.

один
03.04.2021, 00:24
Пропустил return во внутренней ф-ции. Надо же.
Спасибо!