Διαδρομές
/
JavaScript
JavaScript
/
Ασκήσεις
/
Τα Αναλυτικά Ξόρκια της Elyse
Τα Αναλυτικά Ξόρκια της Elyse

Τα Αναλυτικά Ξόρκια της Elyse

Άσκηση εκμάθησης

Εισαγωγή

Συναρτήσεις βέλους

Εκτός από τις δηλώσεις συνάρτησης και τις εκφράσεις συνάρτησης, η JavaScript έχει και μια άλλη πολύ συνοπτική σύνταξη για τον ορισμό μιας συνάρτησης. Αυτές οι συναρτήσεις ονομάζονται συναρτήσεις βέλους.

Ορίστε μια σύγκριση ανάμεσα σε μια δήλωση συνάρτησης και μια συνάρτηση βέλους.

function addUpTwoNumbers(num1, num2) {
  return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
  return num1 + num2;
};

Αν το σώμα της συνάρτησης περιέχει μόνο μια εντολή return, όπως στο παραπάνω παράδειγμα, το {} και η λέξη-κλειδί return μπορούν να παραλειφθούν. Αν υπάρχει μόνο μία παράμετρος, μπορούν να παραλειφθούν και οι παρενθέσεις ().

const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;

Οι συναρτήσεις βέλους χρησιμοποιούνται συχνά για να ορίσουν σύντομες συναρτήσεις callback απευθείας μέσα στην κλήση της συνάρτησης.

applyToSquare(number => number * number);

Ανάλυση πίνακα

Οι πίνακες έχουν ενσωματωμένες μεθόδους για την ανάλυση των περιεχομένων του πίνακα. Οι περισσότερες από αυτές τις μεθόδους δέχονται ως όρισμα μια συνάρτηση που επιστρέφει αληθή ή ψευδή τιμή. Μια τέτοια συνάρτηση ονομάζεται predicate.

Οι ενσωματωμένες μέθοδοι προορίζονται για χρήση αντί για έναν βρόχο for ή για την ενσωματωμένη μέθοδο forEach:

Παράδειγμα ανάλυσης με έναν βρόχο for:

const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
  if (numbers[i] === 'two') {
    return i;
  }
}
// => 1

Παράδειγμα ανάλυσης με μια ενσωματωμένη μέθοδο:

const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1

Παρακάτω φαίνονται μερικές άλλες χρήσιμες ενσωματωμένες μέθοδοι που είναι διαθέσιμες για την ανάλυση ενός πίνακα. Δες το MDN για μια πλήρη λίστα μεθόδων πίνακα.

includes

Η μέθοδος includes(value) προσδιορίζει αν ένας πίνακας περιέχει μια συγκεκριμένη τιμή. Επιστρέφει true όταν η τιμή περιέχεται, αλλιώς false.

const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false

every

Η μέθοδος every(predicate) δέχεται μια συνάρτηση που είναι ένα predicate. Ελέγχει αν όλα τα στοιχεία του πίνακα επιστρέφουν true όταν περαστούν στο predicate. Με άλλα λόγια: η μέθοδος ελέγχει ότι όλα τα στοιχεία της περνούν το τεστ που δόθηκε στην κλήση της συνάρτησης. Επιστρέφει true όταν κάθε στοιχείο περνά το τεστ του predicate, αλλιώς false.

const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true

some

Η μέθοδος some(predicate) είναι ίδια με τη μέθοδο every, αλλά επιστρέφει true αν τουλάχιστον ένα στοιχείο του πίνακα περάσει το τεστ του predicate.

const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true

find

Η μέθοδος find(predicate) επιστρέφει την τιμή του πρώτου στοιχείου του πίνακα που περνά το τεστ του predicate. Εκεί που η some() επιστρέφει true όταν περνά, η find() επιστρέφει την πραγματική τιμή μέσα στον πίνακα. Η μέθοδος επιστρέφει undefined όταν κανένα από τα στοιχεία του πίνακα δεν περνά το τεστ του predicate.

const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1

findIndex

Η findIndex(predicate) είναι ίδια με τη μέθοδο find(), αλλά επιστρέφει τη (πρώτη) θέση του στοιχείου που περνά το τεστ του predicate αντί για την value. Η μέθοδος επιστρέφει -1 όταν κανένα από τα στοιχεία του πίνακα δεν περνά το τεστ του predicate.

const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1

Οδηγίες

Η Elyse, η επίδοξη μάγισσα, συνεχίζει την εκπαίδευσή της. Θα της δοθούν αρκετές στοίβες από κάρτες που χρειάζεται για να εκτελέσει τα κόλπα της. Για να γίνουν τα πράγματα λίγο πιο εύκολα, χρησιμοποιεί μόνο τις κάρτες 1 έως 10.

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

1. Βρες τη θέση μιας κάρτας

Η Elyse θέλει να μάθει τη θέση (index) μιας κάρτας στη στοίβα.

const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3

2. Προσδιόρισε αν μια κάρτα υπάρχει

Η Elyse θέλει να προσδιορίσει αν μια κάρτα υπάρχει στη στοίβα, με άλλα λόγια, αν η στοίβα περιέχει ένα συγκεκριμένο number.

const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true

3. Προσδιόρισε αν κάθε κάρτα είναι άρτια

Η Elyse θέλει να μάθει αν κάθε κάρτα είναι άρτια, με άλλα λόγια, αν κάθε αριθμός στη στοίβα είναι άρτιος number.

isEachCardEven([2, 4, 6, 7]);
// => false

4. Έλεγξε αν η στοίβα περιέχει μια κάρτα με περιττή τιμή

Η Elyse θέλει να μάθει αν υπάρχει περιττός αριθμός στη στοίβα.

doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true

5. Πάρε την πρώτη περιττή κάρτα από τη στοίβα

Η Elyse θέλει να μάθει την τιμή της πρώτης κάρτας που είναι περιττή.

getFirstOddCard([4, 2, 8, 7, 9]);
// => 7

6. Προσδιόρισε τη θέση της πρώτης κάρτας που είναι άρτια

Η Elyse θέλει να μάθει τη θέση της πρώτης κάρτας που είναι άρτια.

getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
JavaScript Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τα Αναλυτικά Ξόρκια της Elyse;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις JavaScript με 37 έννοιες159 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.