Il metodo sort
Il metodo sort ordina un array
in ordine lessicografico e restituisce l'array
già modificato. È possibile specificare opzionalmente
una funzione personalizzata per l'ordinamento.
Sintassi
array.sort([funzione]);
Esempio
Ordiniamo un array:
let arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());
Risultato dell'esecuzione del codice:
['a', 'b', 'c', 'd']
Esempio
Ordiniamo un array di numeri:
let arr = [4, 1, 7, 2];
console.log(arr.sort());
Risultato dell'esecuzione del codice:
[1, 2, 4, 7]
Esempio
Aggiungiamo numeri all'array e ordiniamolo:
let arr = [1, 123, 2, 4, 111, 7];
console.log(arr.sort());
Come risultato dell'esecuzione del codice vedremo che i numeri non sono disposti in ordine crescente, ma in ordine lessicografico, cioè i numeri vengono confrontati tra loro come stringhe. In questo caso, il confronto avviene per ogni carattere, verificando se il codice del primo carattere è maggiore di quello adiacente, e così via. Risultato:
[1, 111, 123, 2, 4, 7]
Esempio
Ora ordiniamo l'array
usando una funzione, in cui specifichiamo la condizione -
se il primo parametro è maggiore del secondo, allora li scambiamo
(per questo in return qualsiasi numero positivo).
In caso contrario, lo scambio non è richiesto e specifichiamo
0 o qualsiasi numero negativo:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
if (a > b) {
return 1;
} else {
return -1;
}
});
console.log(arr);
Risultato dell'esecuzione del codice:
[1, 2, 4, 7, 111, 123]
Esempio
Per comodità, abbreviamo il codice nella nostra funzione dell'esempio precedente:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
return a - b;
});
console.log(arr);
Risultato dell'esecuzione del codice:
[1, 2, 4, 7, 111, 123]
Esempio
E ora, usando una funzione, ordiniamo l'array in ordine decrescente:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);
Risultato dell'esecuzione del codice:
[123, 111, 7, 4, 2, 1]
Esempio
Ordiniamo un array di oggetti
per la chiave 'one' in ordine crescente:
let arr = [
{one: 1, two: 2},
{one: 7, two: 1},
{one: 3, two: 3}
];
arr.sort(function(a, b) {
return a.one - b.one;
});
console.log(arr);
Risultato dell'esecuzione del codice:
[
{one: 1, two: 2},
{one: 3, two: 3},
{one: 7, two: 1}
]
Esempio
E ora ordiniamo l'array di oggetti
per la chiave 'two':
let arr = [
{one: 1, two: 2},
{one: 7, two: 1},
{one: 3, two: 3}
];
arr.sort(function(a, b) {
return a.two - b.two;
});
console.log(arr);
Risultato dell'esecuzione del codice:
[
{one: 7, two: 1},
{one: 1, two: 2},
{one: 3, two: 3}
]
Esempio
Verifichiamo se l'array è cambiato dopo
l'applicazione del metodo sort:
let arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();
console.log(arr);
Risultato dell'esecuzione del codice:
['a', 'b', 'c', 'd']
Vedi anche
-
il metodo
filter,
che permette di filtrare gli elementi dell'array