We are checking out some useful array methods, and today we are looking at the reduce()
method.
The reduce method can be used to convert our array to one specific single value.
Also, check out my article on the JavaScript filter() method
Using the Javascript reduce() method
The reduce can be used for instance to just count a total, let's say we have the following array.
const items = [
{ name: 'T-shirt plain', price: 9 },
{ name: 'T-shirt print', price: 20 },
{ name: 'Jeans', price: 30 },
{ name: 'Cap', price: 5 }
];
How can we now simply get a total of all these items?
const reduced = items.reduce((total, item) => {
total += item.price;
return total;
}, 0);
// 64
What we are doing here is giving the argument total
, which is the initialValue
, the next argument is the currentValue
then we add the price to our total value.
Then at the end, you see a 0
defined, this is the initialValue
default.
The arguments for the reduce
is as follows:
const new = original.reduce(function(total, current, index, array), initialValue);
Where the following applies:
total
: Required, the initial valuecurrent
: Required, the value of the current indexindex
: Optional, array index of the current rowarray
: Optional, array current row belongs to.initialValue
: Optional, value to be defined as a starting point.
You can ofcourse also only count certain items, let's say we have discounted items and only want to count those:
const items = [
{ name: 'T-shirt plain', price: 9, discount: true },
{ name: 'T-shirt print', price: 20, discount: false },
{ name: 'Jeans', price: 30, discount: true },
{ name: 'Cap', price: 5, discount: false }
];
const reduced = items.reduce((total, item) => {
if(item.discount)
total += item.price;
return total;
}, 0);
// 39
As you can see, very powerful, but easy to implement method. Really cuts down on a lot of loop logic.
Thank you for reading, and let's connect!
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter