Sobes.tech
Junior — Middle

Какви са разликите между методите map, flatMap и filterMap при обработка на колекции?

sobes.tech AI

Отговор от 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]