Назад к вопросам
Junior — Middle
75
В чем отличия между методами map, flatMap и filterMap при обработке коллекций?
Компании, где спрашивали
Touch Instinct
Ответ от нейросети
sobes.tech AI
Методы map, flatMap и filterMap применяются для обработки коллекций, но имеют разные цели:
-
mapпреобразует каждый элемент коллекции в другой элемент, возвращая коллекцию с тем же количеством элементов. -
flatMapсначала применяет функцию, которая возвращает коллекцию для каждого элемента, а затем "расплющивает" результат в одну плоскую коллекцию. Это удобно, когда из одного элемента нужно получить несколько. -
filterMap(в некоторых языках или библиотеках, например, Swift) сочетает фильтрацию и преобразование: функция возвращает опциональное значение, и в итоговую коллекцию попадают только непустые результаты.
Пример на Swift:
let numbers = [1, 2, 3, 4]
// map: умножаем каждый элемент на 2
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]
// flatMap: для каждого числа возвращаем массив с элементом и его квадратом
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]
// filterMap (compactMap в Swift): преобразуем строки в Int, отбрасывая nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]