Sobes.tech

/** * Υλοποιήστε τη λειτουργία sumPromises, η οποία * λαμβάνει ως επιχειρήματα υποσχέσεις και * επιστρέφει το άθροισμα * των αποτελεσμάτων της ολοκλήρωσής τους. * * Η λειτουργία μπορεί να δέχεται οποιονδήποτε αριθμό επιχειρημάτων. * Μπορείτε να χρησιμοποιήσετε οποιοδήποτε API υποσχέσεων. */ // Παράδειγμα χρήσης const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); sumPromises(promise1, promise2).then(console.log); // 3

171

// Είναι απαραίτητο να υλοποιήσετε τη μέθοδο groupBy, που επεκτείνει τις τυπικές μεθόδους των πινάκων. // Η μέθοδος πρέπει να επιστρέφει μια ομαδοποιημένη έκδοση του πίνακα — ένα αντικείμενο, // στο οποίο τα κλειδιά είναι τα αποτελέσματα της κλήσης της συνάρτησης fn(arr[i]) για κάθε στοιχείο, // και οι τιμές είναι πίνακες που περιέχουν όλα τα στοιχεία του αρχικού πίνακα με αυτό το κλειδί. // κώδικας εδώ // Παράδειγμα 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id: 1 }], // 2: [{ id: 2 }] // } // Παράδειγμα 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Παράδειγμα 3 const array3 = [1.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 1: [0.5, 1.4], // 3: [1.3] // }

150

/** * Υλοποιήστε τη λειτουργία runOnce, η οποία λαμβάνει * μια λειτουργία και επιστρέφει μια νέα λειτουργία. Η νέα * λειτουργία μπορεί να κληθεί μόνο μία φορά, όλες οι * επακόλουθες κλήσεις επιστρέφουν undefined. * * Η τυλιγμένη λειτουργία μπορεί να δέχεται επιχειρήματα * και να επιστρέφει ένα αποτέλεσμα. */ function runOnce(fn) { // ο κώδικάς σας } const logHello = (name) => { console.log(`γεια σου, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'γεια σου, Oleg!' logHelloOnce('Olga'); // undefined

125

/** * Είναι απαραίτητο να γράψετε μια λειτουργία που λαμβάνει ως είσοδο ένα URL, * πραγματοποιεί ένα αίτημα GET σε αυτό το URL και επιστρέφει τα δεδομένα (json). * Για την απόκτηση δεδομένων, χρησιμοποιήστε το fetch. * Μπορείτε να χρησιμοποιήσετε μόνο το API Promise. * Αν προκύψει σφάλμα κατά τη διάρκεια του αιτήματος, δοκιμάστε ξανά 5 φορές. * Αν τελικά δεν καταφέρετε να λάβετε τις πληροφορίες, επιστρέψτε το σφάλμα "Ο ορισμένος URL δεν είναι προσβάσιμος". */ function get(url) { // κώδικας εδώ } get(url) .then(res => console.log(res)) .catch(err => console.error(err))

114

// Σας δίνεται μια συμβολοσειρά που αποτελείται από λατινικά γράμματα, κενά και σημεία στίξης. // Μια συμβολοσειρά ονομάζεται παγκράμ αν περιέχει κάθε ένα από τα 26 λατινικά γράμματα τουλάχιστον μία φορά. // Καθορίστε αν η συμβολοσειρά είναι παγκράμ. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; function isPangram(text) { // ο κώδικάς σας εδώ } console.log(isPangram('A pangram or holoalphabetic sentence is a sentence using every letter of a given alphabet at least once.')); // -> false console.log(isPangram('Waltz, bad nymph, for quick jigs vex.')); // -> true

87