Table of contents
1.
Introduction
2.
Why This Function is Used
3.
Syntax, Parameter and Return Value
3.1.
Syntax: 
3.2.
Parameters:
3.3.
Return Value: 
4.
Examples
4.1.
Mapping and Flattening Numbers:
4.2.
JavaScript
4.3.
Processing and Flattening Objects:
4.4.
JavaScript
4.5.
Nested Array Transformation:
4.6.
JavaScript
4.7.
Combining Arrays:
4.8.
JavaScript
5.
Frequently Asked Questions 
5.1.
How does _.flatMap() differ from _.map() followed by _.flatten()?
5.2.
Can _.flatMap() handle deeply nested arrays?
5.3.
Is _.flatMap() suitable for complex data transformations?
6.
Conclusion
Last Updated: Mar 27, 2024
Easy

Lodash _.flatMap() Method

Author Gaurav Gandhi
0 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Combining mapping and flattening operations is a frequent necessity in array manipulation. Lodash addresses this with the _.flatMap() method, which first maps each element using a provided function and then flattens the result into a new array. 

Lodash _.flatMap() Method

This article aims to demystify _.flatMap(), exploring its application, syntax, and utility through detailed examples and FAQs.

Why This Function is Used

The _.flatMap() function is used for two primary purposes: transforming each element in a collection and then flattening the results into a single array. This is especially useful when dealing with nested array structures where each element needs to be processed and the structure flattened for further use. It streamlines what would otherwise be a two-step process of mapping and then flattening, enhancing code efficiency and readability.

Syntax, Parameter and Return Value

Syntax: 

_.flatMap(collection, [iteratee=_.identity])

Parameters:

  • collection (Array|Object): The collection to iterate over.
     
  • [iteratee=_.identity] (Function): The function invoked per iteration.

Return Value: 

(Array) - Returns the new flattened array.

Examples

Mapping and Flattening Numbers:

  • JavaScript

JavaScript

var _ = require('lodash');

var numbers = [1, 2, 3];

var doubledAndFlattened = _.flatMap(numbers, n => [n, n * 2]);

console.log(doubledAndFlattened);
You can also try this code with Online Javascript Compiler
Run Code

Output: 

[1, 2, 2, 4, 3, 6]


This example demonstrates mapping numbers to their doubles and flattening the result.

Processing and Flattening Objects:

  • JavaScript

JavaScript

var users = [{ 'user': 'barney', 'age': 36 },

            { 'user': 'fred', 'age': 40 }];

var namesAndAges = _.flatMap(users, u => [u.user, u.age]);

console.log(namesAndAges);
You can also try this code with Online Javascript Compiler
Run Code

Output:

['barney', 36, 'fred', 40]


Shows mapping an array of objects to an array of their properties and flattening it.

Nested Array Transformation:

  • JavaScript

JavaScript

var nestedArray = [[1, 2], [3, 4], [5, 6]];

var flatMapped = _.flatMap(nestedArray, x => x.map(n => n + 1));

console.log(flatMapped);
You can also try this code with Online Javascript Compiler
Run Code

Output: 

[2, 3, 4, 5, 6, 7]


An example of transforming and flattening a nested array.

Combining Arrays:

  • JavaScript

JavaScript

var arrays = [['a', 'b'], ['c', 'd']];

var combined = _.flatMap(arrays, x => x);

console.log(combined);
You can also try this code with Online Javascript Compiler
Run Code

Output: 

['a', 'b', 'c', 'd']


Demonstrates the simple flattening of an array of arrays without transformation.

Frequently Asked Questions 

How does _.flatMap() differ from _.map() followed by _.flatten()?

_.flatMap() combines mapping and flattening into one operation, offering a more concise and potentially more efficient approach than using _.map() followed by _.flatten() separately.

Can _.flatMap() handle deeply nested arrays?

_.flatMap() flattens only one level deep after mapping. For deeper flattening, consider using _.flatMapDeep().

Is _.flatMap() suitable for complex data transformations?

_.flatMap() is versatile and can handle complex transformations, but the clarity and performance should be considered for very complex or large datasets.

Conclusion

Lodash's _.flatMap() method is a practical and efficient tool for transforming and flattening collections in JavaScript. It elegantly simplifies the process of mapping each element in a collection and then flattening the result, enhancing code efficiency and readability. This method is particularly useful in scenarios involving nested arrays or when both transformation and flattening of data are required.

You can refer to our guided paths on the Coding Ninjas. You can check our course to learn more about DSADBMSCompetitive ProgrammingPythonJavaJavaScript, etc. 

Also, check out some of the Guided Paths on topics such as Data Structure and AlgorithmsCompetitive ProgrammingOperating SystemsComputer Networks, DBMSSystem Design, etc., as well as some Contests, Test Series, and Interview Experiences curated by top Industry Experts.

Live masterclass