Виталий Котов
Как работает метод flatMap() - JavaScript
Метод flatMap() сначала вызывает функцию к каждому элементу в массиве как в методе map(), а затем сокращает вложенность массива как в методе flat() на 1 уровень.
// объявляем массив
let numbers = [1, 2, 3, 4, 5];
// каждый элемент массива возводится в квадрат, а затем уменьшается вложенность на 1 уровень
const resultingArray = numbers.flatMap((x) => [x ** 2]);
console.log(resultingArray);
// Вывод в консоль:
// [ 1, 4, 9, 16, 25 ]Синтаксис flatMap()
Синтаксис метода flatMap() следующий:
arr.flatMap(callback(currentValue), thisArg);Где arr - это массив.
Метод flatMap() сначала применяет функцию к каждому элементу массива, а затем преобразует полученный результат в новый массив. Этот метод полезен для одновременного преобразования и "сглаживания" массивов. Чтобы полностью понимать возможности flatMap() необходимо уверенное знание основ работы с массивами и функциями высшего порядка. Если вы хотите детальнее погрузиться в JavaScript — приходите на наш большой курс JavaScript с нуля. На курсе 198 уроков и 30 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Параметры flatMap()
Метод flatMap() принимает:
callback- функцию, которая будет вызываться для каждого элемента массива. Принимает:
currentValue- текущий обрабатываемый элемент в массиве.
- функцию, которая будет вызываться для каждого элемента массива. Принимает:
thisArg(необязательно) - значение, используемое в качествеthis, при вызове функцииcallback.
Возвращаемое значение flatMap()
Возвращает новый массив с элементами в качестве значений, возвращенных функцией callback для каждого элемента соответственно.
Примечания:
flatMap()не изменяет исходный массив.forEach()равнозначен записиarray.map().flat().
Примеры
Пример 1: Использование метода flatMap()
// объявляем массив
let numbers = [1, 2, 3, 4, 5];
// каждый элемент массива увеличивается на 1
// затем вложенность массива уменьшается на 1 уровень
let resultingArray = numbers.flatMap((element) => element + 1);
console.log(resultingArray);Вывод в консоль:
[ 2, 3, 4, 5, 6 ]В приведенном выше примере мы использовали метод flatMap() для увеличения каждого элемента массива чисел на 1.
((element) => element + 1) - это функция метода map, которая выполняется в каждом элементе numbers.
Метод возвращает массив, в котором вложенность каждого элемента уменьшается на 1 уровень - [ 2, 3, 4, 5, 6 ], а также каждый элемент увеличенный на 1.
Пример 2: Использование flat() и map() вместо flatMap()
Метод flatMap() представляет собой комбинацию методов flat() и map(). Вместо двух методов можно просто использовать комбинированную версию, т.е. flatMap().
// объявляем массив
let numbers = [1, 2, 3, 4, 5];
// инкрементируем (увеличиваем) каждый элемент массива с помощью map()
let afterMapping = numbers.map((element) => element + 2);
// уменьшаем вложенность массива методом flat()
let afterFlattening = afterMapping.flat();
console.log(afterFlattening); // [ 3, 4, 5, 6, 7 ]
// используем flatMap() вместо flat() and map()
let after_flatMap = numbers.flatMap((element) => element + 2);
console.log(after_flatMap); // [ 3, 4, 5, 6, 7 ]Вывод в консоль:
[ 3, 4, 5, 6, 7 ]
[ 3, 4, 5, 6, 7 ]Сначала мы использовали методы map() и flat() отдельно в массиве чисел.
Затем мы использовали метод flatMap(), который сначала сделал map() массива, а затем flat().
В обоих случаях метод вернул один и тот же массив - [ 3, 4, 5, 6, 7 ].
flatMap() позволяет эффективно преобразовывать и "сглаживать" массивы. Однако, для его эффективного использования, важно понимать, как работают массивы, как использовать функции высшего порядка и как создавать сложные преобразования данных. Все это вы найдете на курсе JavaScript с нуля. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир JavaScript прямо сегодня.
Постройте личный план изучения Javascript до уровня Middle — бесплатно!
Javascript — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по Javascript
Лучшие курсы по теме

Основы JavaScript
Антон Ларичев
TypeScript с нуля
Антон Ларичев