Хочу выяснить сумму возрастов, выдаёт NaN. В чём ошибка?
const arr = [
{name: "Саша", age: 19},
{name: "Катя", age: 21},
{name: "Миша", age: 17},
{name: "Федя", age: 23},
{name: "Клава", age: 22}
];
const arr2 = arr.reduce((prev, item) => {
return prev.age + item.age;
})
console.log(arr2)
Ответы (2 шт):
Автор решения: Alex Krass
→ Ссылка
Вы возвращаете число и prev становится числом на следующей итерации, поэтому никакого age у него больше нет. Либо возвращайте объект с этим самим age как return { age : prev.age + item.age }, либо используйте только числа с начальным значением 0.
var arr = [
{name: "Саша", age: 19},
{name: "Катя", age: 21},
{name: "Миша", age: 17},
{name: "Федя", age: 23},
{name: "Клава", age: 22}
];
var arr2 = arr.reduce((prev, item) => {
return prev + item.age;
}, 0)
console.log(arr2)
Автор решения: Grundy
→ Ссылка
первый параметр в функции, передаваемой reduce в качестве callback, хранит значение на предыдущей итерации.
В данном случае, на первой итерации - значение берется из первого элемента, на второй и последующих - это значение число, у которого нет свойства age.
Проще всего, всегда считать, что накапливается число, для этого нужно указать начальное значение, например 0
const arr = [{
name: "Саша",
age: 19
},
{
name: "Катя",
age: 21
},
{
name: "Миша",
age: 17
},
{
name: "Федя",
age: 23
},
{
name: "Клава",
age: 22
}
];
const arr2 = arr.reduce((prev, item) => {
return prev + item.age;
}, 0)
console.log(arr2)