Sobes.tech
Junior

Come ordineresti un array di numeri?

sobes.tech AI

Risposta dell'AI

// Utilizziamo il metodo sort() con una funzione di confronto
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Ordinamento crescente

// Per ordinare in ordine decrescente:
// numbers.sort((a, b) => b - a);

Il metodo sort() in JavaScript ordina gli elementi dell'array in loco. Per impostazione predefinita, converte gli elementi in stringhe e li ordina lessicograficamente. Per ordinare correttamente i numeri, è necessario passare una funzione di confronto a sort().

La funzione di confronto prende due argomenti, a e b.

  • Se la funzione restituisce un numero negativo, a verrà prima di b.
  • Se restituisce un numero positivo, b verrà prima di a.
  • Se restituisce 0, l'ordine degli elementi non cambia.

Per ordinare i numeri in ordine crescente si usa (a, b) => a - b. Se a è minore di b, il risultato è negativo e a viene prima. Per ordinare in ordine decrescente si usa (a, b) => b - a. Se b è minore di a, il risultato è positivo e b viene prima.

Altri metodi (meno frequenti per array numerici semplici, ma utili):

  • Metodo localeCompare() per stringhe con numeri:

    // Non raccomandato per numeri puri, ma può essere usato
    // se i numeri sono rappresentati come stringhe e si deve considerare la localizzazione.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // Ordina come [ "1", "2", "10" ]
    
  • Creare una copia dell'array prima di ordinare:

    // Se si desidera mantenere l'array originale
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // o
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);