Arrays are an essential data structure in JavaScript, offering a flexible way to store and manipulate collections of elements. JavaScript provides a rich set of built-in array methods that empower developers to perform various operations efficiently. In this article, we will delve into two powerful array methods: flat()
and flatMap()
. These methods enable us to work with nested arrays, perform transformations, and achieve concise and elegant code.
flat(depth)
:
- The
flat()
method creates a new array that is flattened (depth-wise) by concatenating subarrays into a single array. - By default, it flattens the array with a depth of 1, meaning it only flattens one level of nested arrays.
- You can also specify the
depth
parameter to indicate how many levels of nesting should be flattened. - The resulting flattened array does not modify the original array.
- If any of the elements in the array are themselves arrays, those arrays are flattened into the resulting array.
- Empty slots in the array are not preserved in the resulting array. Instead, they are skipped, and the resulting array only contains the existing non-empty elements. Here’s an example to illustrate how
flat()
works:
let myArray = [1, [2, [3, 4]]];
let flattenedArray = myArray.flat();
console.log(flattenedArray); // Output: [1, 2, [3, 4]]
let deeplyNestedArray = [1, [2, [3, [4]]]];
let deeplyFlattenedArray = deeplyNestedArray.flat(Infinity);
console.log(deeplyFlattenedArray); // Output: [1, 2, 3, 4]
let sparseArray = [1, , 3, , 5];
let flattenedArray = sparseArray.flat();
console.log(flattenedArray); // Output: [1, 3, 5]
In the first example, flat()
with the default depth of 1 flattens the array one level, resulting in [1, 2, [3, 4]]
.
In the second example, flat(Infinity)
flattens the array recursively, regardless of the depth of nesting, resulting in [1, 2, 3, 4]
.
flatMap(callback)
:
- The
flatMap()
method applies a mapping function to each element of an array and then flattens the result into a new array. - It combines the functionalities of
map()
andflat()
into a single method. - The provided
callback
function is invoked for each element of the array, and it must return either an array or a value. - The returned arrays or values are then flattened into the resulting array.
- Similar to
map()
, theflatMap()
method preserves the original length of the array. - Like
flat()
, it does not modify the original array. Here’s an example to illustrate howflatMap()
works:
let myArray = [1, 2, 3];
let mappedArray = myArray.flatMap(function(element) {
return [element * 2, element * 3];
});
console.log(mappedArray); // Output: [2, 3, 4, 6, 6, 9]
In the example above, the flatMap()
method applies the provided callback function to each element of the array. The function returns an array with the doubled and tripled values of each element. The resulting array is then flattened into [2, 3, 4, 6, 6, 9]
.