Vous pourriez utiliser un tableau json et la fonction sort
fonction. Il s'agit d'une structure assez facile à entretenir et à manipuler (ex : tri).
Non testé, mais voici l'idée. Cela supporterait l'ordre multiple et l'ordre séquentiel si vous passez dans un tableau dans lequel vous mettez les colonnes dans l'ordre par lequel elles doivent être ordonnées.
var DATA_TABLE = {
{name: 'George', lastname: 'Blarr', age:45},
{name: 'Bob', lastname: 'Arr', age: 20}
//...
};
function sortDataTable(arrayColNames, asc) { // if not asc, desc
for (var i=0;i<arrayColNames.length;i++) {
var columnName = arrayColNames[i];
DATA_TABLE = DATA_TABLE.sort(function(a,b){
if (asc) {
return (a[columnName] > b[columnName]) ? 1 : -1;
} else {
return (a[columnName] < b[columnName]) ? 1 : -1;
}
});
}
}
function updateHTMLTable() {
// update innerHTML / textContent according to DATA_TABLE
// Note: textContent for firefox, innerHTML for others
}
Imaginons maintenant que vous ayez besoin d'ordonner par nom de famille, puis par nom, et enfin par âge.
var orderAsc = true;
sortDataTable(['lastname', 'name', 'age'], orderAsc);
Il devrait en résulter quelque chose comme :
{name: 'Jack', lastname: 'Ahrl', age: 20},
{name: 'Jack', lastname: 'Ahrl', age: 22},
//...