Reputation: 9
const people = [
{ name: 'Matt', friend: true, awesomeLevel: 10 },
{ name: 'Matias', friend: true, awesomeLevel: 10 },
{ name: 'Catie', friend: false, awesomeLevel: 3 },
{ name: 'Samantha', friend: false, awesomeLevel: 4 },
{ name: 'Jonathan', friend: true, awesomeLevel: 8 },
{ name: 'Josh', friend: true, awesomeLevel: 7 }
]
let totallyAwesome = people.reduce((acc, ele) => acc + ele.awesomeLevel)
console.log(totallyAwesome)
So I'm trying to use reduce to get the whole total added up of awesomeLevel
Upvotes: 1
Views: 37
Reputation: 4636
You only forget the starting-value 0
in your reduce at the end as second parameter (just after the callback).
const people = [
{ name: 'Matt', friend: true, awesomeLevel: 10 },
{ name: 'Matias', friend: true, awesomeLevel: 10 },
{ name: 'Catie', friend: false, awesomeLevel: 3 },
{ name: 'Samantha', friend: false, awesomeLevel: 4 },
{ name: 'Jonathan', friend: true, awesomeLevel: 8 },
{ name: 'Josh', friend: true, awesomeLevel: 7 }
]
let totallyAwesome = people.reduce((acc, {awesomeLevel}) => acc + awesomeLevel, 0);
console.log(totallyAwesome)
Upvotes: 0
Reputation: 386883
You need to add a initialValue for the accumulator. Otherwise the first element is taken as start value for Array#reduce
.
const people = [
{ name: 'Matt', friend: true, awesomeLevel: 10 },
{ name: 'Matias', friend: true, awesomeLevel: 10 },
{ name: 'Catie', friend: false, awesomeLevel: 3 },
{ name: 'Samantha', friend: false, awesomeLevel: 4 },
{ name: 'Jonathan', friend: true, awesomeLevel: 8 },
{ name: 'Josh', friend: true, awesomeLevel: 7 }
];
let totallyAwesome = people.reduce((acc, ele) => acc + ele.awesomeLevel, 0);
// ^
console.log(totallyAwesome);
Upvotes: 1