Όταν δουλεύεις με πίνακες, μερικές φορές θέλεις να εκτελέσεις κώδικα για κάθε τιμή του πίνακα. Αυτό ονομάζεται επανάληψη ή βρόχος πάνω στον πίνακα.
Εδώ θα δούμε την περίπτωση όπου δε θέλεις να τροποποιήσεις τον πίνακα στη διαδικασία. Για να μετασχηματίσεις πίνακες, δες αντ' αυτού την έννοια των μετασχηματισμών πινάκων.
for
Ο πιο βασικός τρόπος για να κάνεις επανάληψη πάνω σε έναν πίνακα είναι να χρησιμοποιήσεις έναν βρόχο for, δες την έννοια των βρόχων for.
const numbers = [6.0221515, 10, 23];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23
for...of βρόχοςΌταν θέλεις να δουλέψεις με την τιμή απευθείας σε κάθε επανάληψη και δε χρειάζεσαι καθόλου τη θέση, μπορείς να χρησιμοποιήσεις έναν for...of βρόχο.
Ο for...of λειτουργεί όπως ο βασικός βρόχος for που φαίνεται παραπάνω, αλλά αντί να πρέπει να ασχοληθείς με τη θέση ως μεταβλητή μέσα στον βρόχο, σου δίνεται απευθείας η τιμή.
const numbers = [6.0221515, 10, 23];
// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
console.log(number);
}
// => 6.0221515
// => 10
// => 23
Όπως ακριβώς στους κανονικούς βρόχους for, μπορείς να χρησιμοποιήσεις το continue για να σταματήσεις την τρέχουσα επανάληψη και το break για να σταματήσεις εντελώς την εκτέλεση του βρόχου.
forEach
Κάθε πίνακας περιλαμβάνει μια μέθοδο forEach που μπορεί να χρησιμοποιηθεί για να κάνεις επανάληψη πάνω στα στοιχεία του πίνακα.
Το forEach δέχεται ένα callback ως παράμετρο.
Η συνάρτηση callback καλείται μία φορά για κάθε στοιχείο του πίνακα.
Το τρέχον στοιχείο, η θέση του και ολόκληρος ο πίνακας περνιούνται στο callback ως ορίσματα.
Συχνά χρησιμοποιείται μόνο το τρέχον στοιχείο ή η θέση.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
Δεν υπάρχει τρόπος να σταματήσεις την επανάληψη μόλις ξεκινήσει ο βρόχος forEach.
Οι εντολές break και continue δεν υπάρχουν σε αυτό το πλαίσιο.
Ως επίδοξη μάγισσα, η Elyse χρειάζεται να αναλύει την τράπουλά της με πολλούς διαφορετικούς τρόπους. Για να κρατήσει τα πράγματα απλά, χρησιμοποιεί μόνο κάρτες με τιμές 1-10.
Η Elyse θέλει να μάθει πόσες κάρτες ενός συγκεκριμένου τύπου έχει στην τράπουλά της.
Γράψε μια συνάρτηση cardTypeCheck που παίρνει δύο παραμέτρους: έναν πίνακα με κάρτες (την τράπουλα της Elyse) και τον τύπο της κάρτας που θα μετρήσεις.
Η συνάρτηση πρέπει να χρησιμοποιεί forEach και να επιστρέφει τον αριθμό των καρτών του συγκεκριμένου τύπου που υπάρχουν στην τράπουλα.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Για ένα άλλο κόλπο, η Elyse χρειάζεται να ξέρει πόσες μονές ή ζυγές κάρτες υπάρχουν στην τράπουλά της.
Υλοποίησε μια συνάρτηση determineOddEvenCards που παίρνει δύο παραμέτρους: έναν πίνακα με κάρτες (την τράπουλα της Elyse) και ένα Boolean (λογική τιμή), όπου το true αντιστοιχεί στις "ζυγές" και το false στις "μονές".
Αυτή η συνάρτηση πρέπει να επιστρέφει έναν μόνο αριθμό: τον αριθμό των μονών ή ζυγών καρτών που υπάρχουν στην τράπουλα (ανάλογα με την τιμή του δεύτερου ορίσματος).
Για εξάσκηση, χρησιμοποίησε αυτή τη φορά έναν βρόχο for...of στην υλοποίηση της συνάρτησης.
determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2
determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
Γράψου στο Exercism για να μάθεις και να κατακτήσεις JavaScript με 37 έννοιες159 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.