Η μέθοδος reduce
Η μέθοδος reduce συμπτύσσει έναν πίνακα σε
μία μόνο τιμή (ανάγει). Για παράδειγμα,
με αυτή τη μέθοδο μπορείτε εύκολα να βρείτε το άθροισμα
των στοιχείων ενός πίνακα (δηλαδή ο πίνακας θα αναχθεί
σε μία μόνο τιμή - το άθροισμα των στοιχείων).
Ως πρώτη παράμετρο, η μέθοδος reduce λαμβάνει
μια συνάρτηση, η οποία θα εκτελεστεί διαδοχικά
για κάθε στοιχείο του πίνακα, ξεκινώντας από το πρώτο.
Σε αυτή τη συνάρτηση μπορούν να περαστούν 4 παράμετροι.
Εάν αυτές οι παράμετροι υπάρχουν (δεν είναι υποχρεωτικές),
τότε στην πρώτη θα τοποθετηθεί αυτόματα το ενδιάμεσο
αποτέλεσμα, στη δεύτερη θα τοποθετηθεί το στοιχείο
του πίνακα, στην τρίτη - ο αριθμός του στοιχείου στον πίνακα (δείκτης),
και στην τέταρτη - ο ίδιος ο πίνακας.
Το ενδιάμεσο αποτέλεσμα - είναι μια μεταβλητή,
στην οποία θα συσσωρεύεται η τιμή
που θα επιστρέψει η μέθοδος reduce, όταν
περάσει από όλα τα στοιχεία του πίνακα. Για παράδειγμα,
εκεί μπορείτε διαδοχικά να συσσωρεύετε το άθροισμα
των στοιχείων του πίνακα: πρώτα να βάλετε το πρώτο
στοιχείο, στο επόμενο πέρασμα του βρόχου ήδη
το άθροισμα του πρώτου και του δεύτερου στοιχείου, στο επόμενο
πέρασμα - το άθροισμα του πρώτου, του δεύτερου και του τρίτου.
Και έτσι, μέχρι να τελειώσει ο πίνακας.
Η συνάρτηση, που δέχεται η reduce,
πρέπει να επιστρέφει τη νέα τιμή του ενδιάμεσου
αποτελέσματος.
Ως δεύτερη παράμετρο της μεθόδου reduce καθορίζεται
η αρχική τιμή του ενδιάμεσου αποτελέσματος.
Εάν δεν καθοριστεί, τότε θα είναι ίση με το πρώτο
στοιχείο του πίνακα, και η επεξεργασία των στοιχείων θα ξεκινήσει
από το δεύτερο στοιχείο.
Σύνταξη
πίνακας.reduce(function(ενδιάμεσο αποτέλεσμα, στοιχείο, δείκτης, πίνακας) {
return νέο ενδιάμεσο αποτέλεσμα;
}, αρχική τιμή);
Παράδειγμα
Ας βρούμε το άθροισμα των στοιχείων ενός πίνακα:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Αποτέλεσμα εκτέλεσης του κώδικα:
21
Παράδειγμα
Ας βρούμε το άθροισμα όλων των θετικών αριθμών του πίνακα:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(sum, elem) {
if (elem >= 0) {
return sum + elem;
} else {
return sum;
}
}, 0);
console.log(res);
Αποτέλεσμα εκτέλεσης του κώδικα:
10