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

  • map premení každý prvok kolekcie na iný prvok a vráti kolekciu s rovnakým počtom prvkov.

  • flatMap najskô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]