In questo articolo parleremo del metodo sort in JavaScript, utile per ordinare gli elementi di un array.
La sintassi del metodo sort() è la seguente: nomeArray.sort().
Si può anche indicare una funzione di confronto per cui la sintassi diventa: nomeArray.sort(funzione di confronto).
La funzione di confronto è dunque opzionale e dunque l’ordinamento avviene in base al valore dei caratteri Unicode.
Facciamo adesso degli esempi pratici di utilizzo.
sort JavaScript – primo esempio
Ordinare in ordine crescente un array di stringhe.
Quindi innanzitutto creiamo il nostro array di esempio:
var oggettiScolastici = ['matita','gomma','temperino'];
Dopo, con il metodo sort lo ordiniamo, visualizzando poi il risultato nella console del browser.
oggettiScolastici.sort();
console.log(oggettiScolastici);
Attenzione però! Se le iniziali dei nomi non sono tutte maiuscole o minuscole l’ordinamento può non essere quello desiderato.
Infatti le codifiche Unicode ad esempio della lettera a oppure A sono sequenze binarie differenti.
Inoltre, se proviamo ad ordinare un array formato da numeri, non avremo il risultato sperato. Ne parleremo nel dettaglio nel prossimo esempio.
sort JavaScript – secondo esempio
Ordiniamo un array di numeri con il metodo sort().
Innanzitutto forniamo il nostro array di numeri:
var numeri = [4,1,6,8,9,62];
Dopo proviamo a ordinarlo con il metodo sort di JavaScript:
numeri.sort();
console.log(numeri);
Il risultato ottenuto, visibile nella console del browser, sarà: Array(6) [ 1, 4, 6, 62, 8, 9 ]. Dunque l’ordinamento non è corretto.
Per poter utilizzare il metodo sort con i numeri allora è necessario utilizzare una funzione che faccia un confronto tra i numeri stessi.
Quindi in questo caso utilizziamo il metodo sort di JavaScript con questa sintassi: nomeArray.sort(funzione di confronto).
La funzione di confronto restituisce un valore negativo, zero oppure positivo. Questo valore dipende dal confronto tra due valori adiacenti.
function(a, b){return a - b}
Se a è minore di b allora il risultato è negativo e dunque a viene ordinato prima di b. Se a è maggiore di b il risultato è negativo e dunque b viene ordinato prima di a. Infine se è 0 vuol dire che a e b sono uguali e dunque è indifferente scrivere prima un numero o l’altro.
Ecco dunque il semplice algoritmo che permette di ordinare un array numerico.
var numeri = [4,1,6,8,9,62];
numeri.sort(function(a, b) {
return a - b;
});
console.log(numeri);
In questa lezione abbiamo parlato del metodo sort in JavaScript e come ordinare array di stringhe e di numeri. Nelle prossime lezioni affronteremo altri metodi sugli array in JavaScript.
Alcuni link utili
Introduzione al tutorial JavaScript
Come utilizzare JavaScript alert
Come utilizzare JavaScript confirm