Sobes.tech
Назад к вопросам
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]