A2oz

How to Flatten an Array in Angular?

Published in Angular Development 2 mins read

Flattening an array in Angular involves transforming a multi-dimensional array into a single-dimensional array. You can achieve this using various methods:

1. Using the flat() method

The flat() method is a built-in JavaScript method that lets you flatten an array to a specified depth.

  • Syntax: array.flat(depth)
  • Example:
const multiDimensionalArray = [1, 2, [3, 4], 5];
const flattenedArray = multiDimensionalArray.flat(); 
// flattenedArray: [1, 2, 3, 4, 5]

2. Using the reduce() method

The reduce() method iterates over an array and accumulates a result based on a callback function. You can use this to flatten an array by concatenating sub-arrays.

  • Syntax: array.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);
  • Example:
const multiDimensionalArray = [1, 2, [3, 4], 5];
const flattenedArray = multiDimensionalArray.reduce((acc, curr) => acc.concat(curr), []); 
// flattenedArray: [1, 2, 3, 4, 5]

3. Using recursion

You can recursively iterate through the array and flatten it by checking if each element is an array and then recursively flattening it.

  • Example:
function flattenArray(array: any[]): any[] {
  return array.reduce((acc, curr) => {
    if (Array.isArray(curr)) {
      return acc.concat(flattenArray(curr));
    } else {
      return acc.concat(curr);
    }
  }, []);
}

4. Using the flatMap() method

The flatMap() method combines map() and flat() operations. It applies a mapping function to each element and then flattens the result.

  • Syntax: array.flatMap(callback)
  • Example:
const multiDimensionalArray = [1, 2, [3, 4], 5];
const flattenedArray = multiDimensionalArray.flatMap(item => (Array.isArray(item) ? item : [item]));
// flattenedArray: [1, 2, 3, 4, 5]

5. Using the spread syntax

The spread syntax (...) allows you to expand an iterable (like an array) into individual elements. You can use this to flatten an array by spreading each sub-array.

  • Example:
const multiDimensionalArray = [1, 2, [3, 4], 5];
const flattenedArray = [...multiDimensionalArray[0], ...multiDimensionalArray[1], ...multiDimensionalArray[2], ...multiDimensionalArray[3]];
// flattenedArray: [1, 2, 3, 4, 5]

Choosing the appropriate method depends on the specific requirements and complexity of your application. The flat() method is generally the most straightforward and efficient option for flattening arrays in Angular.

Related Articles