Sobes.tech
Junior — Middle

Millised on erinevused meetodite map, flatMap ja filterMap vahel kolleksioonide töötlemisel?

sobes.tech AI

Vastus AI-lt

Meetodid map, flatMap ja filterMap kasutatakse kogumike töötlemiseks, kuid neil on erinevad eesmärgid:

  • map teisendab iga kogumiku elemendi teiseks elemendiks ja tagastab kogumi sama arvu elementidega.

  • flatMap rakendab esmalt funktsiooni, mis iga elemendi jaoks tagastab kogumi, ning seejärel "lame" tulemuse üheks tasapinnaliseks kogumiks. See on kasulik, kui ühelt elemendilt soovite saada mitu.

  • filterMap (mõnedes keeltes või teekides, näiteks Swift) ühendab filtrimise ja teisendamise: funktsioon tagastab valikulise väärtuse, ning lõplikku kogumikku kuuluvad ainult mitte-null tulemused.

Näide Swiftis:

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

// map: korrutame iga elementi kahega
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]

// flatMap: iga numbri jaoks tagastame massiivi, kus on element ja selle ruut
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]

// filterMap (Swiftis: compactMap): konverteerime stringid int-ks, ignoreerides nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]