Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите:Не работает callback в arr.reduce() (https://javascript.ru/forum/misc/82213-pomogite-ne-rabotaet-callback-v-arr-reduce.html)

один 02.04.2021 22:03

Помогите:Не работает callback в arr.reduce()
 
Задача из учебника Кантора, раздел "Методы массивов":
Получить средний возраст: Напишите функцию 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 во внутренней ф-ции. Надо же.
Спасибо!


Часовой пояс GMT +3, время: 20:56.