Кратко
СкопированоМетод 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)
Тогда массив превратится в плоский:
[ 'первый уровень', 'первый уровень', 'второй уровень', 'второй уровень', 'третий уровень', 'третий уровень', 'четвёртый уровень', 'четвёртый уровень']
[
'первый уровень',
'первый уровень',
'второй уровень',
'второй уровень',
'третий уровень',
'третий уровень',
'четвёртый уровень',
'четвёртый уровень'
]