[].flat()

Метод flat() возвращает новый массив и позволяет уменьшить вложенность массива на заданное количество уровней

Время чтения: меньше 5 мин

Кратко

Секция статьи "Кратко"

Метод flat() возвращает новый массив и уменьшает вложенность массива на заданное количество уровней.

Пример

Секция статьи "Пример"

У нас есть массив с тремя уровнями вложенности:

        
          
          const nested = [  'первый уровень',  'первый уровень',  [    'второй уровень',    'второй уровень',    [      'третий уровень',      'третий уровень'    ]  ]]
          const nested = [
  'первый уровень',
  'первый уровень',
  [
    'второй уровень',
    'второй уровень',
    [
      'третий уровень',
      'третий уровень'
    ]
  ]
]

        
        
          
        
      

Вызовем метод flat() без аргументов:

        
          
          const flat = nested.flat()console.log(flat)
          const flat = nested.flat()
console.log(flat)

        
        
          
        
      

Увидим что получившийся массив стал менее вложенным:

        
          
          [  'первый уровень',  'первый уровень',  'второй уровень',  'второй уровень',  [    'третий уровень',    'третий уровень'  ]]
          [
  'первый уровень',
  'первый уровень',
  'второй уровень',
  'второй уровень',
  [
    'третий уровень',
    'третий уровень'
  ]
]

        
        
          
        
      

Как пишется

Секция статьи "Как пишется"

Метод принимает необязательный аргумент depth — количество уровней, на которые нужно уменьшить вложенность. Значение по умолчанию — 1.

Результатом вызова метода flat() будет новый массив меньшей вложенности.

Как это понять

Секция статьи "Как это понять"

Если массив содержит другие массивы в качестве своих элементов, то метод flat() позволяет уменьшить вложенность, вплоть до полного превращения массива в плоский.

Если вложенность неизвестна

Секция статьи "Если вложенность неизвестна"

Если вложенность неизвестна, но нужно получить из массива с вложенными элементами плоский массив, то передайте аргумент Infinity. Тогда метод рекурсивно обойдёт массив и сделает на его основе новый плоский.

Возьмём массив с тремя уровнями вложенности:

        
          
          const nested = [  'первый уровень',  'первый уровень',  [    'второй уровень',    'второй уровень',    [      'третий уровень',      'третий уровень',      [        'четвертый уровень',        'четвертый уровень'      ]    ]  ]]
          const nested = [
  'первый уровень',
  'первый уровень',
  [
    'второй уровень',
    'второй уровень',
    [
      'третий уровень',
      'третий уровень',
      [
        'четвертый уровень',
        'четвертый уровень'
      ]
    ]
  ]
]

        
        
          
        
      

Вызовем метод flat() с аргументом Infinity:

        
          
          const flat = nested.flat(Infinity)console.log(flat)
          const flat = nested.flat(Infinity)
console.log(flat)

        
        
          
        
      

Тогда массив превратится в плоский:

        
          
          [  'первый уровень',  'первый уровень',  'второй уровень',  'второй уровень',  'третий уровень',  'третий уровень',  'четвертый уровень',  'четвертый уровень']
          [
  'первый уровень',
  'первый уровень',
  'второй уровень',
  'второй уровень',
  'третий уровень',
  'третий уровень',
  'четвертый уровень',
  'четвертый уровень'
]