In
JavaScript è possibile ordinare un
Array tramite il metodo
sort:
var arr=[3,54,72,3456,23,2,5];
arr.sort(); // => [2, 23, 3, 3456, 5, 54, 72]
l'ordinamento è ascendente e cambia l'ordinamento dell'array originale.
Per avere un ordinamento
discendente è necessario passare al metodo sort una
funzione di comparazione:
function mySorter(a, b){ return -(a-b); }
arr.sort(mySorter);
la funzione accetta in ingresso due argomenti e deve restituire un intero:
- -1 se "a" è minore di "b"
- +1 se "a" è maggiore di "b"
- 0 se "a" è uguale a "b"
La funzione di comparazione è indispensabile per ordinare un array di oggetti in base ad una specifica proprietà.
Ad esempio per ordinare un array di oggetti in base a una proprietà string in modo che il confronto sia
case insensitive:
var arr = [
{regione: 'Piemonte'},
{regione: 'Lombardia'},
{regione: 'pieMonTe'},
{regione: 'toscana'},
{regione: 'Marche'},
{regione: 'lazio'},
{regione: 'Liguria'}
];
function mySorter(a, b){
var vA = a.regione.toLowerCase();
var vB = b.regione.toLowerCase();
if(vA < vB) return -1;
if(vA > vB) return 1;
return 0;
}
arr.sort(mySorter);
/*
[
{"regione":"lazio"},
{"regione":"Liguria"},
{"regione":"Lombardia"},
{"regione":"Marche"},
{"regione":"Piemonte"},
{"regione":"pieMonTe"},
{"regione":"toscana"}
]
*/
Se la versione di JavaScript supporta le lambda expression, ad esempio
Node JS, la funzione può essere scritta come:
// ordinamento numerico discendente
arr.sort((a,b)=> a-b)