Ordinare un Array in JavaScript
In JavaScript è possibile ordinare un Array tramite il metodo sort:
la funzione accetta in ingresso due argomenti e deve restituire un intero:
Ad esempio per ordinare un array di oggetti in base a una proprietà string in modo che il confronto sia case insensitive:
Se la versione di JavaScript supporta le lambda expression, ad esempio Node JS, la funzione può essere scritta come:
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);
- -1 se "a" è minore di "b"
- +1 se "a" è maggiore di "b"
- 0 se "a" è uguale a "b"
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)