Ordinare un array di JSON in Javascript
Quando lavoriamo con strutture di dati molto complesse non possiamo fare a meno di citare gli oggetti JSON. Una delle maggiori difficoltà che si possono riscontrare con gli array di JSON potrebbe essere l’ordinamento in quanto non è presente una funzione standard di ordinamento da poter applicare (contrariamente ai semplici array).
Quella che vi proporremo nell’articolo odierno è una funzione che vi consentirà di ordinare il vostro array JSON sia in modo crescente che decrescente individuando in maniera autonoma se sia un ordinamento di tipo numerico o alfanumerico.
L’algoritmo dunque genera inizialmente un oggetto la cui nomenclatura è “json” al suo interno avremo una pseudo-anagrafica degli utenti con le proprietà id, nome e cognome. Successivamente, richiamiamo la funzione “order” la quale richiede tre parametri json, column e type.
- JSON, è l’oggetto da ordinare
- COLUMN, è la proprietà per la quale si necessita l’ordinamento
- TYPE, è la tipologia di ordinamento che si vuole effettuare (crescente o decrescente)
La funzione comprende in maniera autonoma il tipo di dato per il quale si vuole ordinare tramite la funzione predefinita (typeof) in modo impostare correttamente i parametri di ordinamento.
function order(json,column,type)
{
json.sort(function (a, b) {
var textA;
var textB;
if (typeof (a[column]) == "number") {
textA = a[column];
textB = b[column];
}
else {
textA = a[column].toUpperCase();
textB = b[column].toUpperCase();
}
if (type.toUpperCase() == "DESC")
return (textA > textB) ? -1 : (textA < textB) ? 1 : 0;
else if (type.toUpperCase() == "ASC")
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});
console.log(json);
}
var json = [
{id: 1, nome: 'Francesco', cognome: 'Rossi'},
{id: 2, nome: 'Mario', cognome: 'Giallo'},
{id: 3, nome: 'Carmelo', cognome: 'Verde'}
];
this.order(this.json,"id","DESC")
LINK UTILI
Pagina Instagram: https://www.instagram.com/developer_sumo/
I nostri Corsi: https://www.developersumo.com/corsi/
Le nostre App su Play Store: https://play.google.com/store/apps/developer?id=Developer+Sumo