xxxxxxxxxx
run.addEventListener("click", function () {
let sum = people.reduce(function (a, b) { // function(previousValue, currentValue)
return {
age: a.age + b.age, //select age in object array
};
});
console.log(sum); //output sum of ages
});
xxxxxxxxxx
var accounts = [
{ name: 'James Brown', msgCount: 123 },
{ name: 'Stevie Wonder', msgCount: 22 },
{ name: 'Sly Stone', msgCount: 16 },
{ name: 'Otis Redding', msgCount: 300 } // Otis has the most messages
];
// get sum of msgCount prop across all objects in array
var msgTotal = accounts.reduce(function(prev, cur) {
return prev + cur.msgCount;
}, 0);
console.log('Total Messages:', msgTotal); // Total Messages: 461
xxxxxxxxxx
arr = [{x:1}, {x:3}]
arr.reduce((accumulator, current) => accumulator + current.x, 0);
xxxxxxxxxx
const getSumByKey = (arr, key) => {
return arr.reduce((accumulator, current) => accumulator + Number(current[key]), 0)
}
arr = [{x:1}, {x:3}]
getSumByKey(arr, 'x') // returns 4
xxxxxxxxxx
class fruitCollection extends Array {
sum(key) {
return this.reduce((a, b) => a + (b[key] || 0), 0);
}
}
const fruit = new fruitCollection( [
{ description: 'orange', Amount: 50},
{ description: 'orange', Amount: 50},
{ description: 'apple', Amount: 75},
{ description: 'kiwi', Amount: 35},
{ description: 'watermelon', Amount: 25 },]);
console.log(fruit.sum('Amount'));
xxxxxxxxxx
let cart = [
{
name: "JavaScript book",
price: 4,
},
{
name: "UGG Women's Hazel Ankle Boot",
price: 79,
},
{
name: "OXO Good Grips 11-Inch Balloon Whisk",
price: 9,
},
];
// totalPrice is 92
let totalPrice = cart.reduce(function (accumulator, item) {
return accumulator + item.price;
}, 0);
xxxxxxxxxx
const fruitTally = fruit.reduce((currentTally, currentFruit) => {
currentTally[currentFruit] = (currentTally[currentFruit] || 0) + 1
return currentTally
} , {})
// returns {"apple":3,"banana":3,"cherry":2,"mango":2,"apricot":1,"guava":2}
xxxxxxxxxx
const fruits = [
{
type: "oranges",
amount: 10,
},
{
type: "apples",
amount: 0,
},
{
type: "oranges",
amount: 5,
},
];
const endresult = Array.from(
fruits
.reduce((map, curr) => {
if (!map.has(curr.type)) map.set(curr.type, { curr, count: 1 });
else {
map.get(curr.type).amount += curr.amount;
map.get(curr.type).count++;
}
return map;
}, new Map())
.values()
);
console.log(endresult);