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.
Array.prototype.reduce(callbackFunction)
Array.prototype.reduce(callbackFunction, initialValue)
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.
callbackFunction(accumulator, currentValue, currentIndex, array){}
The accumulated result from the previous iteration or the initial value if provided.
The value of the current array element being processed.
The index of the current element, starting at 0 if an initial value is provided, otherwise 1.
The array on which the reduce() method is being executed.
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.
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
While yes this is exactly what the reduce method is good for and good at, there is a lot more it can do.
const ages = [23, 15, 45, 13, 66, 54, 38]; let oldestPerson = ages.reduce(function(maxAge, currentAge){ if(currentAge>maxAge){ maxAge = currentAge; } return maxAge; }); // 66
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.
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']
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.
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 }
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.
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!