Junior — Middle
Jaké jsou rozdíly mezi metodami map, flatMap a filterMap při zpracování kolekcí?
sobes.tech AI
Odpověď od AI
Metody map, flatMap a filterMap se používají ke zpracování kolekcí, ale mají různé účely:
-
mappřemění každý prvek kolekce na jiný prvek a vrací kolekci se stejným počtem prvků. -
flatMapnejprve aplikuje funkci, která vrací kolekci pro každý prvek, a poté "zploští" výsledek do jedné ploché kolekce. To je užitečné, když chcete získat více prvků z jednoho. -
filterMap(v některých jazycích nebo knihovnách, například Swift) kombinuje filtrování a transformaci: funkce vrací volitelnou hodnotu, a do finální kolekce se dostanou pouze nenulové výsledky.
Příklad ve Swift:
let numbers = [1, 2, 3, 4]
// map: násobíme každý prvek dvěma
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]
// flatMap: pro každý počet vracíme pole s prvkem a jeho čtvercem
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]
// filterMap (v Swift: compactMap): převádíme řetězce na Int, ignorujeme nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]