Sobes.tech
Junior — Middle

Mik a különbségek a map, flatMap és filterMap módszerek között gyűjtemények feldolgozásakor?

sobes.tech MI

Válasz az MI-től

A map, flatMap és filterMap módszerek gyűjtemények feldolgozására szolgálnak, de különböző célokat szolgálnak:

  • A map minden elemét egy másik elemre alakítja, és ugyanannyi elemet tartalmazó gyűjteményt ad vissza.

  • A flatMap először egy olyan függvényt alkalmaz, amely minden elemhez egy gyűjteményt ad vissza, majd "egyszerűsíti" az eredményt egy egyetlen lapos gyűjteménnyé. Ez akkor hasznos, ha egy elemből több elemet akarunk kapni.

  • A filterMap (egyes nyelveken vagy könyvtárakban, például Swiftben) kombinálja a szűrést és a transzformációt: a függvény opcionális értéket ad vissza, és csak a nem üres eredmények kerülnek a végső gyűjteménybe.

Swift példával:

let numbers = [1, 2, 3, 4]

// map: minden elemet megszorozunk 2-vel
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]

// flatMap: minden számhoz egy tömböt adunk, ami az elemet és a négyzetét tartalmazza
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]

// filterMap (Swiftben: compactMap): stringeket Int-re konvertál, kihagyva a nil értékeket
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]