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
mapminden elemét egy másik elemre alakítja, és ugyanannyi elemet tartalmazó gyűjteményt ad vissza. -
A
flatMapelő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]