Arrays often hold other arrays. This happens with API responses, form data, or nested objects. These layers add extra steps when you want to work with the values. A flat array in JavaScript removes the inner arrays and gives you one simple list.
Table of Content
Let’s move on to the following section to cover everything you need to learn about how the flat()
function works in JavaScript and see examples.
What Does It Mean to Flat an Array in JavaScript?
JavaScript includes a built-in method called .flat()
to flatten arrays. It allows you to remove inner arrays and combine all values into one list.
Syntax:
array.flat([depth])
array
is the original array.depth
is optional. It tells how deep to flatten the array.- The default depth is
1
.
Parameters:
flat(1)
flattens one level (default).flat(2)
flattens two levels.flat(Infinity)
flattens all nested levels.
For example:
const nested = [1, [2, 3], [4, [5]]];
const flat = nested.flat(2);
Output:
[1, 2, 3, 4, 5]
The nested
array holds numbers and other arrays inside it. The flat(2)
call removes two levels of nesting and returns one flat list.
Understand the Deep Flat in JavaScript
A deep flat means you want to flatten an array all the way, no matter how many nested levels it has.
To do this, pass Infinity as the depth:
const arr = [1, [2, [3, [4, 5]]]];
const deepFlat = arr.flat(Infinity);
The output:
[1, 2, 3, 4, 5]
So in this context:
flat()
= shallow flatten (default is 1 level)flat(Infinity)
= deep flatten (removes all nested levels)
Use Infinity
when you don’t know how many levels the nesting goes.
Browser Support and Polyfill for flat()
The Array.prototype.flat()
method is supported in most modern browsers:
Browser | Support |
---|---|
Chrome | 69+ |
Firefox | 62+ |
Edge | 79+ |
Safari | 12+ |
Node.js | 11+ |
Internet Explorer | Not Supported |
This code adds support for .flat()
in older browsers:
if (!Array.prototype.flat) {
Array.prototype.flat = function(depth = 1) {
return this.reduce((acc, val) => {
if (Array.isArray(val) && depth > 0) {
acc.push(...val.flat(depth - 1));
} else {
acc.push(val);
}
return acc;
}, []);
};
}
console.log([12,3,[14, [undefined, 15, [null, true]]],55,[5544]].flat(5));
The output:
[ 12, 3, 14, undefined, 15, null, true, 55, 5544 ]
It checks if .flat()
exists. If not, it defines the method using reduce
and recursion. Add this before you use .flat()
to make sure the method works everywhere.
Examples
Nested arrays:
You can flatten nested arrays with the flat
function. It works in modern browsers and takes an optional depth value.
const numbers = [10, [20, 30], [40, [50]]];
const firstLevel = numbers.flat(1);
console.log(firstLevel);
Output:
[ 10, 20, 30, 40, [ 50 ] ]
This removes only the first layer of nesting. Deeper arrays stay as they are.
Flatten all levels:
const deepArray = [10, [20, [30, [40]]]];
const fullFlat = deepArray.flat(Infinity);
console.log(fullFlat);
Output:
[10, 20, 30, 40]
You can pass Infinity
to flatten every layer, no matter how deep.
Flatten an array with custom objects:
const data = [
{ id: 1 },
[{ id: 2 }, { id: 3 }],
[[{ id: 4 }], [{ id: 5 }]],
];
const flatData = data.flat(2);
console.log(flatData);
Here you have a list of objects nested in arrays. The .flat(2)
call brings all objects to one level, so you can loop through them. It doesn’t need a check for depth.
Flatten deeply nested form data:
const formData = [
['name', 'John'],
[['email', '[email protected]']],
[[[['age', 30]]]],
];
const cleanData = formData.flat(Infinity);
console.log(cleanData);
Output:
[ 'name', 'John', 'email', '[email protected]', 'age', 30 ]
If form data comes in layers from a server or script, you can flatten it completely. This gives a clean list you can loop through or pair up later.
Wrapping Up
You learned what it means to flatten an array and why it’s useful for nested data. You also explored how to use the built-in .flat()
method and how the depth
parameter works.
Here’s a quick recap:
- Use
.flat()
to turn nested arrays into a single-level array. - Set
depth
to control how many levels to flatten. - Use
Infinity
for full flattening. - Add a polyfill if you need support in older browsers.
Similar Reads
JavaScript added Math.cbrt to solve cube roots. Before that, developers used custom code or Math.pow with 1/3. It works with…
You have to organize your JavaScript code structure. A clean layout helps you read and fix your code. Whether you…
Math.max() is a built-in JavaScript function that returns the highest number from a list of values. It has been part…
Some numbers come from user input and other come from math operations. Sometimes, these numbers need to stay positive. The…
Some numbers do not stay whole. You get decimal parts when you divide or calculate prices. You may need to…
The JavaScript nullish coalescing operator (??) gives a default value when a variable is null or undefined. Understand the Nullish…
The development of full-featured and interesting pages cannot be done without JavaScript which makes it possible to animate plain HTML…
JavaScript Objects hold values as key and value pairs, and they help you store and access data. Understand the JavaScript…
JavaScript gives you several ways to round numbers, but not all of them round the same way. If you want…
JavaScript moves fast, and new features come. Some browsers do not support these features and cause issues for users. Developers…