Λογότυπο Zephyrnet

JavaScript: Λάβετε το ελάχιστο και μέγιστο στοιχείο του πίνακα

Ημερομηνία:

JavaScript: Λάβετε το ελάχιστο και μέγιστο στοιχείο του πίνακα

Εισαγωγή

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

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

Πώς να αποκτήσετε ελάχιστα και μέγιστα στοιχεία ενός πίνακα χρησιμοποιώντας το μαθηματικά αντικείμενο

Math είναι το ενσωματωμένο καθολικό αντικείμενο ευκολίας της JavaScript που περιέχει πολλές μεθόδους και σταθερές που μπορεί να χρειαστείτε κατά την εκτέλεση μαθηματικών πράξεων. Δύο μέθοδοι που θα χρησιμοποιήσουμε σε αυτό το άρθρο είναι Math.min() και Math.max() – και οι δύο δέχονται μια λίστα αριθμών ως επιχειρήματα. Όπως υποδηλώνουν τα ονόματά τους, το ένα επιστρέφει το στοιχείο με τη χαμηλότερη τιμή και το άλλο επιστρέφει ένα του οποίου η τιμή είναι η υψηλότερη:

console.log(Math.min(20, 23, 27));
console.log(Math.max(20, 23, 27));

console.log(Math.min(-20, -23, -27));
console.log(Math.max(-20, -23, -27));

Εάν τουλάχιστον ένα από τα περασμένα στοιχεία δεν είναι αριθμός ή δεν μπορεί να μετατραπεί σε αριθμό, και τα δύο Math.min() και Math.max() Επιστροφές NaN:

console.log(Math.min('-20', -23, -27));
console.log(Math.max('number', -23, -27));

Ομοίως, αν προσπαθήσουμε να περάσουμε έναν πίνακα ως όρισμα του Math.min() συνάρτηση, παίρνουμε α NaN, αφού αντιμετωπίζεται ως ένα μεμονωμένο στοιχείο, το οποίο δεν μπορεί να μετατραπεί σε βαθμωτή τιμή:

const myArray = [2, 3, 1];
console.log(Math.min(myArray));

Ωστόσο, μια γρήγορη λύση για αυτό είναι να χρησιμοποιήσετε τον τελεστή spread για να ξετυλίξετε τα στοιχεία:

const myArray = [2, 3, 1];
console.log(Math.min(...myArray));

Αν θέλετε να διαβάσετε περισσότερα για τον Διαχειριστή Spread – διαβάστε το δικό μας Οδηγός για το Spread Operator σε JavaScript!

Αποκτήστε μέγιστο και ελάχιστο στοιχείο με περιορίζω()

Λειτουργίες μείωσης, μερικές φορές γνωστές ως αναδίπλωση, είναι μερικές από τις πιο ισχυρές λειτουργίες από λειτουργικό προγραμματισμό, με μεγάλη ποικιλία εφαρμογών. ο reduce() συνάρτηση, εκτελεί μια συνάρτηση μειωτήρα (που ορίζεται σε μια επανάκληση) σε κάθε στοιχείο πίνακα και επιστρέφει μια μεμονωμένη τιμή στο τέλος.

Αξίζει να καλύψουμε τη μέθοδο λόγω του πόσο καθολικά μπορεί να εφαρμοστεί:

const myArray = [20, 23, 27];

let minElement = myArray.reduce((a, b) => {
    return Math.min(a, b);
});

console.log(minElement);

Βρείτε το ελάχιστο και μέγιστο στοιχείο με ισχύουν()

Η apply() Η μέθοδος χρησιμοποιείται για την κλήση μιας συνάρτησης με δεδομένο this τιμή και μια σειρά από ορίσματα. Αυτό μας δίνει τη δυνατότητα να εισάγουμε πίνακες στο Math.min() στατική συνάρτηση:

const myArray = [20, 23, 27];

let minElement = Math.min.apply(Math, myArray);
console.log(minElement);

let minElement = Math.min.apply(null, myArray);
console.log(minElement);

Λήψη ελάχιστων και μέγιστων στοιχείων με τυπικούς βρόχους – Ταχύτερη απόδοση

Οι βρόχοι χρησιμοποιούνται στο JavaScript για την εκτέλεση επαναλαμβανόμενων εργασιών με βάση μια συνθήκη. Οι προϋποθέσεις επιστρέφουν true or false. Ένας βρόχος θα συνεχίσει να τρέχει μέχρι να επιστρέψει η καθορισμένη συνθήκη false. Στην περίπτωσή μας, θα κάνουμε χρήση του for βρόχος – χρησιμοποιείται συνήθως για την εκτέλεση κώδικα πολλές φορές.

Λάβετε το ελάχιστο στοιχείο

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

const myArray = [20, 23, 27];

let minElement = myArray[0];
for (let i = 1; i < arrayLength; ++i) {
    if (myArray[i] < minElement) {
        minElement = myArray[i];
    }
}

console.log(minElement);

Λήψη μέγιστου στοιχείου

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

const myArray = [20, 23, 27];

let maxElement = myArray[0];
for (let i = 1; i < arrayLength; ++i) {
    if (myArray[i] > maxElement) {
        maxElement = myArray[i];
    }
}

console.log(maxElement);

Σημείο αναφοράς απόδοσης

Χρησιμοποιώντας το JS Benchmark – έχουμε εκτελέσει όλες αυτές τις προσεγγίσεις σε ποικίλες εισόδους, από 100 έως 1000000 στοιχεία στον πίνακα. Η απόδοση είναι σχετική και εξαρτάται από το μήκος του πίνακα.

Ρίξτε μια ματιά στον πρακτικό μας οδηγό για την εκμάθηση του Git, με βέλτιστες πρακτικές, πρότυπα αποδεκτά από τον κλάδο και συμπεριλαμβανόμενο φύλλο εξαπάτησης. Σταματήστε τις εντολές του Git στο Google και πραγματικά μαθαίνουν το!

  • Για μικρές συστοιχίες (100), το reduce() η μέθοδος είχε την καλύτερη απόδοση, ακολουθούμενη από τυπικούς βρόχους, τον τελεστή spread και μετά το apply() μέθοδος. Οι επιλαχόντες είναι σχεδόν ίσοι σε απόδοση.
  • Για μεσαίους πίνακες (1000), οι τυπικοί βρόχοι έχουν την καλύτερη απόδοση, ακολουθούμενοι από reduce(), ο τελεστής spread και το apply() μέθοδος. Ο τυπικός βρόχος είναι σημαντικά ταχύτερος από reduce() εδώ, που με τη σειρά του, είναι αρκετά πιο γρήγορο από τους επιλαχόντες.
  • Για πραγματικά μεγάλους πίνακες (1000000), οι τυπικοί βρόχοι υπερτερούν όλων των άλλων μεθόδων σε τόσο μεγάλο βαθμό που η περίπτωση των τυπικών βρόχων είναι πολύ ισχυρή.

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

Σημείωση: Μην παίρνετε τα σημεία αναφοράς στην ονομαστική τους αξία! Εκτελούνται σε διαφορετικά μηχανήματα, με πιθανώς διαφορετικές εκδόσεις προγράμματος περιήγησης και μηχανές JS. Δοκιμάστε τα στην εφαρμογή σας και επιλέξτε την επεκτάσιμη, ταχύτερη επιλογή για τη δική σας περίπτωση χρήσης.

Συμπέρασμα

Σε αυτόν τον οδηγό, ρίξαμε μια ματιά στον τρόπο λήψης του ελάχιστου και του μέγιστου στοιχείου ενός πίνακα σε JavaScript. Ρίξαμε μια ματιά στο Math.min() και Math.max() μέθοδοι, ο τελεστής spread, ο reduce() μέθοδο, το apply() μέθοδο και έγραψε μια προσαρμοσμένη προσέγγιση για τη διέλευση των στοιχείων μέσω του α for βρόχος.

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

Τελευταία ενημέρωση: 11 Μαΐου 2022

Το άρθρο αυτό ήταν χρήσιμο;

Μπορεί επίσης να σας αρέσει…

Λάβετε σεμινάρια, οδηγούς και εργασίες προγραμματιστών στα εισερχόμενά σας.

Δημιουργήστε τη βάση που θα χρειαστείτε για την παροχή, την ανάπτυξη και την εκτέλεση εφαρμογών Node.js στο σύννεφο AWS. Μάθετε Lambda, EC2, S3, SQS και πολλά άλλα!

© 2013-2022 Κατάχρηση στοίβας. Ολα τα δικαιώματα διατηρούνται.

spot_img

Τελευταία Νοημοσύνη

spot_img