Junior — Middle
Kādas ir atšķirības starp metodēm map, flatMap un filterMap kolekciju apstrādē?
sobes.tech AI
Atbilde no AI
Metodes map, flatMap un filterMap tiek kolekciju apstrādei, bet tiem ir dažādi mērķi:
-
mappārveido katru kolekcijas elementu par citu elementu un atgriež kolekciju ar tādu pašu elementu skaitu. -
flatMapvispirms piemēro funkciju, kas katram elementam atgriež kolekciju, un pēc tam "izlīdzina" rezultātu vienā plakanā kolekcijā. Tas ir noderīgi, ja no viena elementa vēlaties iegūt vairākus. -
filterMap(dažās valodās vai bibliotēkās, piemēram, Swift) apvieno filtru un pārveidošanu: funkcija atgriež opcionalo vērtību, un galīgajā kolekcijā iekļūst tikai ne-null rezultāti.
Piemērs Swift:
let numbers = [1, 2, 3, 4]
// map: reizinām katru elementu ar 2
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]
// flatMap: katram skaitlim atgriež masīvu ar elementu un tā kvadrātu
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]
// filterMap (Swift: compactMap): pārvērš stringus par Int, ignorē nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]