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): փոխակերպում ենք տողերը Int-ով, բաց թողնելով nil-երը
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]