Πώς θα ταξινομούσατε έναν πίνακα αριθμών;
sobes.tech AI
Απάντηση από AI
// Χρησιμοποιούμε τη μέθοδο sort() με μια συνάρτηση σύγκρισης
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Αύξουσα ταξινόμηση
// Για φθίνουσα ταξινόμηση:
// numbers.sort((a, b) => b - a);
Η μέθοδος sort() στην JavaScript ταξινομεί τα στοιχεία του πίνακα στη θέση του. Κατά την προεπιλογή, μετατρέπει τα στοιχεία σε συμβολοσειρές και τα ταξινομεί λεξικογραφικά. Για σωστή ταξινόμηση αριθμών, πρέπει να περάσετε μια συνάρτηση σύγκρισης στο sort().
Η συνάρτηση σύγκρισης λαμβάνει δύο επιχειρήματα, a και b.
- Αν η συνάρτηση επιστρέφει αρνητικό αριθμό, το
aθα έρθει πριν τοb. - Αν επιστρέφει θετικό αριθμό, το
bθα έρθει πριν τοa. - Αν επιστρέφει 0, η σειρά των στοιχείων δεν αλλάζει.
Για ταξινόμηση αριθμών σε αύξουσα σειρά, χρησιμοποιείται (a, b) => a - b. Αν το a είναι μικρότερο από το b, το αποτέλεσμα είναι αρνητικό και το a έρχεται πρώτο.
Για ταξινόμηση σε φθίνουσα σειρά, χρησιμοποιείται (a, b) => b - a. Αν το b είναι μικρότερο από το a, το αποτέλεσμα είναι θετικό και το b έρχεται πρώτο.
Άλλες μέθοδοι (λιγότερο συχνές για απλούς αριθμητικούς πίνακες, αλλά χρήσιμες):
-
Μέθοδος
localeCompare()για συμβολοσειρές με αριθμούς:// Δεν συνιστάται για καθαρούς αριθμούς, αλλά μπορεί να χρησιμοποιηθεί // αν οι αριθμοί παρουσιάζονται ως συμβολοσειρές και πρέπει να ληφθεί υπόψη η τοπική ρύθμιση. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Θα ταξινομήσει ως [ "1", "2", "10" ] -
Δημιουργία αντιγράφου του πίνακα πριν την ταξινόμηση:
// Αν θέλετε να διατηρήσετε τον αρχικό πίνακα const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // ή // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);