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

Indice tutorial JavaScript

Introduzione al tutorial JavaScript

Il linguaggio JavaScript

Come utilizzare JavaScript alert

Come utilizzare JavaScript confirm

Utilizzare JavaScript prompt

Variabili in JavaScript

JavaScript substring