Εκτός από τις δηλώσεις συνάρτησης και τις εκφράσεις συνάρτησης, η 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.
Σε αυτή την άσκηση, χρησιμοποίησε ενσωματωμένες μεθόδους για να αναλύσεις τα περιεχόμενα ενός πίνακα.
Η Elyse θέλει να μάθει τη θέση (index) μιας κάρτας στη στοίβα.
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Η Elyse θέλει να προσδιορίσει αν μια κάρτα υπάρχει στη στοίβα, με άλλα λόγια, αν η στοίβα περιέχει ένα συγκεκριμένο number.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Η Elyse θέλει να μάθει αν κάθε κάρτα είναι άρτια, με άλλα λόγια, αν κάθε αριθμός στη στοίβα είναι άρτιος number.
isEachCardEven([2, 4, 6, 7]);
// => false
Η Elyse θέλει να μάθει αν υπάρχει περιττός αριθμός στη στοίβα.
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Η Elyse θέλει να μάθει την τιμή της πρώτης κάρτας που είναι περιττή.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Η Elyse θέλει να μάθει τη θέση της πρώτης κάρτας που είναι άρτια.
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Γράψου στο Exercism για να μάθεις και να κατακτήσεις JavaScript με 37 έννοιες159 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.