Junior — Middle
Aké sú rozdiely medzi metódami map, flatMap a filterMap pri spracovaní kolekcií?
sobes.tech AI
Odpoveď od AI
Metódy map, flatMap a filterMap sa používané na spracovanie kolekcií, ale majú rôzne účely:
-
mappremení každý prvok kolekcie na iný prvok a vráti kolekciu s rovnakým počtom prvkov. -
flatMapnajskôr aplikuje funkciu, ktorá vracia kolekciu pre každý prvok, a potom "zploští" výsledok do jednej plochej kolekcie. To je užitočné, keď chcete získať viac prvkov z jedného. -
filterMap(v niektorých jazykoch alebo knižniciach, napríklad Swift) kombinuje filtrovanie a transformáciu: funkcia vracia voliteľnú hodnotu, a do konečnej kolekcie sa dostanú iba ne-NULL výsledky.
Príklad v Swift:
let numbers = [1, 2, 3, 4]
// map: násobíme každý prvok dvomi
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]
// flatMap: pre každý počet vraciame pole s prvkom a jeho štvorcom
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]
// filterMap (v Swift: compactMap): konvertujeme stringy na Int, ignorujúc nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]