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,
averrà prima dib. - Se restituisce un numero positivo,
bverrà prima dia. - 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);