Διαδρομές
/
JavaScript
JavaScript
/
Ασκήσεις
/
Τα μαγικά της Elyse
Τα μαγικά της Elyse

Τα μαγικά της Elyse

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

Εισαγωγή

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

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

Για παράδειγμα:

const numbers = [1, 'two', 3, 'four'];
numbers[2];
// => 3

Για να βρεις τον αριθμό των στοιχείων που υπάρχουν σε έναν πίνακα, χρησιμοποίησε την ιδιότητα length:

const numbers = [1, 'two', 3, 'four'];
numbers.length;
// => 4

Για να αλλάξεις ένα στοιχείο στον πίνακα, αντιστοιχίζεις μια τιμή στη θέση:

const numbers = [1, 'two', 3, 'four'];
numbers[0] = 'one';
numbers;
// => ['one', 'two', 3, 'four']

Μέθοδοι

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

push

Μπορείς να προσθέσεις μια value στο τέλος ενός πίνακα χρησιμοποιώντας το .push(value). Η μέθοδος επιστρέφει το νέο μήκος του πίνακα.

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

pop

Μπορείς να αφαιρέσεις την τελευταία value από έναν πίνακα χρησιμοποιώντας το .pop(). Η μέθοδος επιστρέφει την τιμή που αφαιρέθηκε. Το μήκος του πίνακα θα μειωθεί εξαιτίας αυτής της αλλαγής.

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

shift

Μπορείς να αφαιρέσεις την πρώτη value από έναν πίνακα χρησιμοποιώντας το .shift(). Η μέθοδος επιστρέφει την τιμή που αφαιρέθηκε. Το μήκος του πίνακα θα μειωθεί εξαιτίας αυτής της αλλαγής.

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

unshift

Μπορείς να προσθέσεις μια value στην αρχή ενός πίνακα χρησιμοποιώντας το .unshift(value). Η μέθοδος επιστρέφει το νέο μήκος του πίνακα.

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

splice

Μπορείς να αφαιρέσεις μια value στη θέση index από έναν πίνακα χρησιμοποιώντας το .splice(index, 1). Η μέθοδος επιστρέφει το στοιχείο ή τα στοιχεία που αφαιρέθηκαν.

const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
Advanced

Αυτές οι μέθοδοι είναι πιο ισχυρές από ό,τι περιγράφεται:

  • Τόσο η push όσο και η unshift σου επιτρέπουν να προσθέσεις πολλές τιμές ταυτόχρονα, δίνοντας περισσότερα ορίσματα. Αυτό δεν είναι απαραίτητο για να ολοκληρώσεις αυτή την άσκηση.
  • Η Splice μπορεί να αφαιρέσει πολλές τιμές αυξάνοντας το δεύτερο όρισμα. Αυτό δεν είναι απαραίτητο για να ολοκληρώσεις αυτή την άσκηση.
  • Η Splice μπορεί επίσης να προσθέσει πολλές τιμές, περνώντας τις ως ορίσματα μετά το deleteCount. Αυτό μπορεί να χρησιμοποιηθεί για να αντικαταστήσεις τιμές ή να εισάγεις τιμές στη μέση ενός πίνακα (για παράδειγμα, αφαιρώντας 0 στοιχεία). Αυτό δεν είναι απαραίτητο για να ολοκληρώσεις αυτή την άσκηση.

Οδηγίες

Ως μελλοντική μάγισσα, η Elyse πρέπει να εξασκηθεί στα βασικά. Έχει μια στοίβα φύλλα που θέλει να χειριστεί.

Για να γίνουν τα πράγματα λίγο πιο απλά, χρησιμοποιεί μόνο τα φύλλα 1 έως 10, ώστε η στοίβα της να μπορεί να αναπαρασταθεί με έναν πίνακα αριθμών. Η θέση ενός συγκεκριμένου φύλλου αντιστοιχεί στη θέση του μέσα στον πίνακα. Αυτό σημαίνει ότι η θέση 0 αντιστοιχεί στο πρώτο φύλλο, η θέση 1 στο δεύτερο φύλλο κ.ο.κ.

Note

Όλες οι συναρτήσεις εκτός από δύο πρέπει να ενημερώνουν τον πίνακα με τα φύλλα και μετά να επιστρέφουν τον τροποποιημένο πίνακα, ένας συνηθισμένος τρόπος εργασίας γνωστός ως μοτίβο Builder, που σου επιτρέπει να συνδέεις ωραία τις συναρτήσεις μεταξύ τους σαν αλυσίδα.

Οι δύο εξαιρέσεις είναι η getItem, που πρέπει να επιστρέφει το φύλλο στη θέση που δίνεται, και η checkSizeOfStack, που πρέπει να επιστρέφει true αν το μέγεθος που δίνεται ταιριάζει.

1. Πάρε ένα φύλλο από τη στοίβα

Για να πάρεις ένα φύλλο, επέστρεψε το φύλλο στη θέση position από τη στοίβα που δίνεται.

const position = 2;
getItem([1, 2, 4, 1], position);
// => 4

2. Αντάλλαξε ένα φύλλο στη στοίβα

Κάνε ένα ταχυδακτυλουργικό κόλπο και αντάλλαξε το φύλλο στη θέση position με το φύλλο αντικατάστασης που δίνεται. Επέστρεψε την τροποποιημένη στοίβα.

const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]

3. Βάλε ένα φύλλο στην κορυφή της στοίβας

Κάνε ένα φύλλο να εμφανιστεί βάζοντας ένα νέο φύλλο στην κορυφή της στοίβας. Επέστρεψε την τροποποιημένη στοίβα.

const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]

4. Αφαίρεσε ένα φύλλο από τη στοίβα

Κάνε ένα φύλλο να εξαφανιστεί αφαιρώντας από τη στοίβα το φύλλο στη θέση position που δίνεται. Επέστρεψε την τροποποιημένη στοίβα.

const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]

5. Αφαίρεσε το πάνω φύλλο από τη στοίβα

Κάνε ένα φύλλο να εξαφανιστεί αφαιρώντας το φύλλο στην κορυφή της στοίβας. Επέστρεψε την τροποποιημένη στοίβα.

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

6. Βάλε ένα φύλλο στον πάτο της στοίβας

Κάνε ένα φύλλο να εμφανιστεί βάζοντας ένα νέο φύλλο στον πάτο της στοίβας. Επέστρεψε την τροποποιημένη στοίβα.

const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]

7. Αφαίρεσε ένα φύλλο από τον πάτο της στοίβας

Κάνε ένα φύλλο να εξαφανιστεί αφαιρώντας το φύλλο στον πάτο της στοίβας. Επέστρεψε την τροποποιημένη στοίβα.

removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]

8. Έλεγξε το μέγεθος της στοίβας

Έλεγξε αν το μέγεθος της στοίβας είναι ίσο με stackSize ή όχι.

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

Έτοιμος να ξεκινήσεις την άσκηση Τα μαγικά της Elyse;

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