In JavaScript è possibile ordinare un Array tramite il metodo sort:
JavaScript
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:
JavaScript
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:
JavaScript
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:
JavaScript
// ordinamento numerico discendente
arr.sort((a,b)=> a-b)
Potrebbe interessarti anche: