Sobes.tech
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:

  • map přemění každý prvek kolekce na jiný prvek a vrací kolekci se stejným počtem prvků.

  • flatMap nejprve 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]