Μέθοδος map
Η μέθοδος map επιτρέπει την εφαρμογή μιας δεδομένης
συνάρτησης για κάθε στοιχείο ενός πίνακα. Ενώ
η μέθοδος δεν αλλάζει τον αρχικό πίνακα,
επιστρέφει έναν τροποποιημένο.
Η μέθοδος λαμβάνει ως παράμετρο μια συνάρτηση, η οποία
θα εκτελεστεί για κάθε στοιχείο του πίνακα.
Αυτό που επιστρέφει αυτή η συνάρτηση μέσω return
για το στοιχείο του πίνακα, θα γίνει η νέα τιμή
αυτού του στοιχείου (βλ. παραδείγματα).
Στη συνάρτηση μπορούν να μεταβιβαστούν 3 παράμετροι.
Εάν αυτές οι παράμετροι υπάρχουν (δεν είναι υποχρεωτικές),
τότε στην πρώτη θα μπει αυτόματα το στοιχείο
του πίνακα, στη δεύτερη θα μπει ο αριθμός του στον πίνακα
(δείκτης), και στην τρίτη - ο ίδιος ο πίνακας.
Σύνταξη
let νέος_πίνακας = πίνακας.map(function(στοιχείο, δείκτης, πίνακας) {
κώδικας
return τροποποιημένο_στοιχείο;
});
Παράδειγμα
Ας δημιουργήσουμε έναν πίνακα, κάθε στοιχείο του οποίου είναι διπλάσιο από το αντίστοιχο στοιχείο του αρχικού πίνακα:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Αποτέλεσμα εκτέλεσης του κώδικα:
[2, 4, 6, 8, 10]
Παράδειγμα
Ας δημιουργήσουμε έναν πίνακα, κάθε στοιχείο του οποίου προκύπτει ως εξής - η τιμή του στοιχείου πολλαπλασιάζεται με τη σειριακή του θέση στον πίνακα:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Αποτέλεσμα εκτέλεσης του κώδικα:
[0, 2, 6, 12, 20]
Παράδειγμα
Εάν χρειαστεί, στην τρίτη παράμετρο μπορεί να μεταβιβαστεί ο ίδιος ο πίνακας:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// εδώ θα είναι προσβάσιμος ο πίνακας arr
});
Παράδειγμα
Η μέθοδος map μπορεί να χρησιμοποιηθεί και για
την επανάληψη σε πολυδιάστατους πίνακες. Ας πούμε, για παράδειγμα,
ότι δίνεται ο ακόλουθος πίνακας:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Ας επαναλάβουμε αυτόν τον πίνακα μέσω
map και ας τυπώσουμε τα στοιχεία του στην κονσόλα:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Ως αποτέλεσμα, το console.log θα εμφανίσει το [1,
2, 3], μετά το [4, 5, 6], μετά
το [7, 8, 9].
Όπως βλέπετε, στη μεταβλητή elem εμφανίζονται
οι υποπίνακες. Ας εφαρμόσουμε τώρα τη μέθοδο
map σε κάθε υποπίνακα και ας υψώσουμε
κάθε στοιχείο του στο τετράγωνο:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
return elem.map(function(num) {
return num * num;
});
});
console.log(result);