Η μέθοδος reduce

Η μέθοδος reduce συμπτύσσει έναν πίνακα σε μία μόνο τιμή (ανάγει). Για παράδειγμα, με αυτή τη μέθοδο μπορείτε εύκολα να βρείτε το άθροισμα των στοιχείων ενός πίνακα (δηλαδή ο πίνακας θα αναχθεί σε μία μόνο τιμή - το άθροισμα των στοιχείων).

Ως πρώτη παράμετρο, η μέθοδος reduce λαμβάνει μια συνάρτηση, η οποία θα εκτελεστεί διαδοχικά για κάθε στοιχείο του πίνακα, ξεκινώντας από το πρώτο. Σε αυτή τη συνάρτηση μπορούν να περαστούν 4 παράμετροι. Εάν αυτές οι παράμετροι υπάρχουν (δεν είναι υποχρεωτικές), τότε στην πρώτη θα τοποθετηθεί αυτόματα το ενδιάμεσο αποτέλεσμα, στη δεύτερη θα τοποθετηθεί το στοιχείο του πίνακα, στην τρίτη - ο αριθμός του στοιχείου στον πίνακα (δείκτης), και στην τέταρτη - ο ίδιος ο πίνακας.

Το ενδιάμεσο αποτέλεσμα - είναι μια μεταβλητή, στην οποία θα συσσωρεύεται η τιμή που θα επιστρέψει η μέθοδος reduce, όταν περάσει από όλα τα στοιχεία του πίνακα. Για παράδειγμα, εκεί μπορείτε διαδοχικά να συσσωρεύετε το άθροισμα των στοιχείων του πίνακα: πρώτα να βάλετε το πρώτο στοιχείο, στο επόμενο πέρασμα του βρόχου ήδη το άθροισμα του πρώτου και του δεύτερου στοιχείου, στο επόμενο πέρασμα - το άθροισμα του πρώτου, του δεύτερου και του τρίτου. Και έτσι, μέχρι να τελειώσει ο πίνακας. Η συνάρτηση, που δέχεται η reduce, πρέπει να επιστρέφει τη νέα τιμή του ενδιάμεσου αποτελέσματος.

Ως δεύτερη παράμετρο της μεθόδου reduce καθορίζεται η αρχική τιμή του ενδιάμεσου αποτελέσματος. Εάν δεν καθοριστεί, τότε θα είναι ίση με το πρώτο στοιχείο του πίνακα, και η επεξεργασία των στοιχείων θα ξεκινήσει από το δεύτερο στοιχείο.

Σύνταξη

javascriptπίνακας.reduce(function(ενδιάμεσο αποτέλεσμα, στοιχείο, δείκτης, πίνακας) {
  return νέο ενδιάμεσο αποτέλεσμα;
}, αρχική τιμή);

Παράδειγμα

Ας βρούμε το άθροισμα των στοιχείων ενός πίνακα:

javascriptlet arr = [1, 2, 3, 4, 5, 6];

let res = arr.reduce(function(sum, elem) {
  return sum + elem;
}, 0);

console.log(res);

Αποτέλεσμα εκτέλεσης του κώδικα:

javascript21

Παράδειγμα

Ας βρούμε το άθροισμα όλων των θετικών αριθμών του πίνακα:

javascriptlet 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);

Αποτέλεσμα εκτέλεσης του κώδικα:

javascript10

Δείτε επίσης

  • η μέθοδος reduceRight,
    που εκτελεί παρόμοια λειτουργία
  • η μέθοδος filter,
    που επιτρέπει το φιλτράρισμα στοιχείων πίνακα
  • οι μέθοδοι map και forEach,
    που επιτρέπουν την εφαρμογή συνάρτησης σε κάθε στοιχείο πίνακα
  • οι μέθοδοι some και every,
    που εκτελούν έλεγχο πίνακα