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 (compactMap σε Swift): μετατρέπουμε συμβολοσειρές σε Int, αγνοώντας το nil
let strings = ["1", "two", "3"]
let filteredMapped = strings.compactMap { Int($0) } // [1, 3]