Home > Web Front-end > JS Tutorial > Understanding Array.reduce()

Understanding Array.reduce()

WBOY
Release: 2024-08-22 19:09:03
Original
870 people have browsed it

Understanding Array.reduce()

Introduction

While taking a introduction course on Javascript and learning about all of the different methods of the Arrays. I did not quite understand the real power of the reduce method and it is only after going back to it a second time that I am now realising how truly useful this method is. I hope the article might make it clearer for some about how this method works and when to use it.

The Method

Array.prototype.reduce(callbackFunction)
Array.prototype.reduce(callbackFunction, initialValue)

What exactly does this method do?

The reduce() method processes each element of an array using a callback function, accumulating the result into a single value. If an initial value is provided, it's used as the starting point; otherwise, the first array element is used, and the iteration starts from the second element.

Callback Function Parameters

callbackFunction(accumulator, currentValue, currentIndex, array){}

accumulator

The accumulated result from the previous iteration or the initial value if provided.

currentValue

The value of the current array element being processed.

currentIndex

The index of the current element, starting at 0 if an initial value is provided, otherwise 1.

array

The array on which the reduce() method is being executed.

Initial Value

When using the reduce method without a initial value, the callback function will take the first element of the array and initialize it as the accumulator and then iterate through the rest of the array.

Use cases

The most common example you will encounter using the reduce method is the sum of an array.

const ages = [23, 15, 45, 13, 66, 54, 38];
let sumOfAges = ages.reduce(function(sumOfAges, currentAge){
    sumOfAges = sumOfAges + currentAge;
    return sumOfAges;
}); // 254
Copy after login

While yes this is exactly what the reduce method is good for and good at, there is a lot more it can do.

Getting the max age of a group

const ages = [23, 15, 45, 13, 66, 54, 38];
let oldestPerson = ages.reduce(function(maxAge, currentAge){
    if(currentAge>maxAge){
        maxAge = currentAge;
    }
    return maxAge;
}); // 66
Copy after login

Here we are using the reduce method to save the highest age that we are encountering in the array and returning that value once iterated through the whole array.

Removing Duplicates in a Array

const store = ['apple', 'pear', 'apple', 'orange', 'apple', 'pear'];
let itemCatalogue = store.reduce(function(uniqueStoreItems, currentItem){
    if(!uniqueStoreItems.includes(currentItem)){
        uniqueStoreItems.push(currentItem);
    }
    return uniqueStoreItems;
}, []); // ['apple', 'pear', 'orange']
Copy after login

Important to note here that for the initial value in the reduce method we are supplying an empty array, []. This means that the accumulator is now an array, and our call back function pushes only items that are not already in that array. As a result we have removed duplicates.

Getting a Count of Items in a Array

const store = ['apple', 'pear', 'apple', 'orange', 'apple', 'pear'];
let itemCount = store.reduce(function(count, currentItem){
    count[currentItem] = (count[currentItem] || 0) + 1;
    return count;
}, {}); // { apple: 3, pear: 2, orange: 1 }
Copy after login

Important to note here is that the initial value is an empty object. As we go through the items in the store, we populate the item with the count.

Conclusion

First of all if you've made it this far thanks for the read! My main goal for writing this article was for me to solidify my understanding of the reduce method and I hope that maybe you learned something new here too! The reduce method has a lot of really cool applications and is really neat to use. Have you got any other use cases or fun tricks with the method? I would love to know!

The above is the detailed content of Understanding Array.reduce(). For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template