Sobes.tech
Junior

Πώς θα ταξινομούσατε έναν πίνακα αριθμών;

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);