Назад к вопросам
Мосбиржа
Junior — Middle
69
Объясните различия между методами map и flatMap в работе с коллекциями или потоками данных.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Метод map применяется к коллекции или потоку и преобразует каждый элемент, возвращая новую коллекцию с элементами, соответствующими результатам преобразования. При этом каждый входной элемент преобразуется в ровно один выходной элемент.
Метод flatMap сначала применяет функцию, которая возвращает коллекцию (или поток) для каждого элемента, а затем "сплющивает" (flatten) все эти вложенные коллекции в одну плоскую коллекцию. Это удобно, когда функция преобразования возвращает несколько элементов для каждого входного.
Пример на Swift:
let numbers = [1, 2, 3]
// map: каждый элемент умножаем на 2
let mapped = numbers.map { [$0, $0 * 2] }
// mapped: [[1, 2], [2, 4], [3, 6]]
// flatMap: преобразуем и сплющиваем
let flatMapped = numbers.flatMap { [$0, $0 * 2] }
// flatMapped: [1, 2, 2, 4, 3, 6]
Таким образом, flatMap полезен, когда функция возвращает коллекцию, и нужно получить одну объединённую коллекцию без вложенности.