DEV Community

Cover image for JavaScript Functional Programming: Map, Filter, & Reduce
Mainul Hasan
Mainul Hasan

Posted on • Originally published at blog.stackademic.com

JavaScript Functional Programming: Map, Filter, & Reduce

While the programming world adopts functional programming paradigms, JavaScript is not left behind. In fact, the language has tailored some of its most potent methods to facilitate functional styles.

Today, we’ll dive deep into three methods: Map, Filter, and Reduce. These array methods are the essence of manipulating data in JavaScript, and understanding them is crucial for any aspiring developer.

1. Map: The Transformer

At its core, the map method is about transformation. Given an array, map applies a function to each of its elements, returning a new array of the transformed elements.

let numbers = [1, 2, 3, 4, 5];
let doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
Enter fullscreen mode Exit fullscreen mode

Think of map as a factory assembly line. Every item (or element) passing through the line gets modified or transformed in the same way.

2. Filter: The Gatekeeper

Where map transforms, filter screens. It evaluates each element against a condition, returning a new array of elements for which the condition is true.

let numbers = [1, 2, 3, 4, 5];
let evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2, 4]
Enter fullscreen mode Exit fullscreen mode

Filter is similar to a club’s doorman, only allowing individuals who satisfy specific criteria.

3. Reduce: The Accumulator

While map and filter return arrays, reduce is a bit more flexible. It traverses over an array element by element, adding up the results as it goes.

let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15
Enter fullscreen mode Exit fullscreen mode

Think of reduce as a snowball rolling down a hill, gathering more snow (data) as it descends.

How the Three Work Together

When combined, these methods can create powerful data manipulation workflows. Here’s a look at chaining them together:

let numbers = [1, 2, 3, 4, 5];
let doubledEvens = numbers
                   .filter(n => n % 2 === 0)
                   .map(n => n * 2)
                   .reduce((acc, curr) => acc + curr, 0);
console.log(doubledEvens); // 12
Enter fullscreen mode Exit fullscreen mode

This chaining reads as: “From the numbers, filter out the evens, double them, and then sum them up.”

The beauty of this chaining approach is that it captures the essence of functional programming in JavaScript. It showcases a declarative style of programming where you specify what you want to do with the data rather than how to do it. Each step is a clear, functional data transformation, making the code more readable and expressive.

Conclusion

Map, Filter, and Reduce aren’t just methods; they’re a mindset, a functional approach to programming in JavaScript.

As a developer, if you learn about these ideas, you’ll improve the way you code and be ready to take on more complex functional programming methods in the future.

Feel free to connect with me on Twitter or LinkedIn.

Read Next...

Top comments (0)