## Introduction#

The `flat()` method creates a new array by flattening nested arrays within an array per the specified depth. By default, the depth is 1. Let’s look at an example,

``````let arr = [1, 2, [3, 4], 5];

let arr2 = arr.flat();

console.log(arr2); // [1, 2, 3, 4, 5]
``````

This is the same as writing,

``````let arr = [1, 2, [3, 4], 5];

let arr2 = arr.flat(1);

console.log(arr2); // [1, 2, 3, 4, 5]
console.log(arr); // [1, 2, [3, 4], 5] → does not modify original array
``````

## Specifying depth parameter#

If we have a deeply nested array and we want the array to be flattened, we can specify the level of depth. For example,

``````let arr = [1, 2, [[3, 4]], 5];

let arr2 = arr.flat();
console.log(arr2); // [1, 2, [3, 4], 5]

let arr3 = arr.flat(2);
console.log(arr3); // [1, 2, 3, 4, 5]
``````

By default, the depth is `1` hence when we apply the `flat()` method on `arr` it does not flatten entirely. Since we know the depth of the nested array is 2 we can pass the parameter as `2`.

If you do not know the level of depth the array contains specify the `Infinity` property and it will flatten recursively until a completely flattened array can be returned.

``````let arr = [1, 2, [[3, 4]], 5];

let arr2 = arr.flat(Infinity);
console.log(arr2); // [1, 2, 3, 4, 5]
``````

## Remove empty elements in an array using flat()#

The `flat()` method can also remove empty elements in an array.

``````let arr = [1, 2, , 5];

let arr2 = arr.flat();

console.log(arr2); // [1, 2, 5]
console.log(arr); // [1, 2, empty, 5]
``````