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]