Sobes.tech
Junior — Middle

Фарқиятҳои байни усулҳои map, flatMap ва filterMap дар коркарди коллексияҳо чист?

sobes.tech AI

Ҷавоб аз AI

Методҳои map, flatMap ва filterMap барои кор бо ҷамъиятҳо истифода мешаванд, аммо ҳадафҳои гуногун доранд:

  • map ҳар элементи ҷамъиятро ба элементи дигар табдил медиҳад ва ҷамъиятро бо ҳамон шумораи элементи он бармегардонад.

  • flatMap аввал функсияро татбиқ мекунад, ки барои ҳар элементи ҷамъият ҷамъиятро бармегардонад, ва сипас натиҷаро ба як ҷамъияти ҳамвор табдил медиҳад. Ин барои вақте ки аз як элементи зиёд гирифтан лозим аст, қулай аст.

  • filterMap (дар баъзе забонҳо ё китобхонаҳо, масалан, Swift) филтр ва табдилро якҷоя мекунад: функсия арзиши интихобӣ медиҳад, ва танҳо натиҷаҳои холӣ накарда дохил мешаванд.

Масалан дар Swift:

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

// map: ҳар элементиро бо 2 зиёд мекунем
let mapped = numbers.map { $0 * 2 } // [2, 4, 6, 8]

// flatMap: барои ҳар адад, массиви бо элементи он ва квадрати он
let flatMapped = numbers.flatMap { [$0, $0 * $0] } // [1, 1, 2, 4, 3, 9, 4, 16]

// filterMap (дар Swift: compactMap): табдил додани stringҳо ба Int, нодида гирифтани nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]