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

  • map pārveido katru kolekcijas elementu par citu elementu un atgriež kolekciju ar tādu pašu elementu skaitu.

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