Il y a quelques minutes, j'ai eu besoin de trier un tableau associatif javascript par ses index, du plus petit au plus grand. Mais javascript (via la méthode sort() de l'objet Array) ne permet que le trie des éléments d'un tableau, et non de ses index. Après une petite recherche, je me suis basé sur le code de Aaron Gustafson afin de créer la fonction ksort() et son opposé krsort().
[MAJ] : Le code de Aaron Gustafson ne prends pas en charge les tableaux de tableau ou d'objet, ni les tableaux de tableau de tableau. Ce qui est très nul dommage. J'ai donc modifié et optimisé tout ça :
/*
array ksort ( array $array)
Trie le tableau array suivant les clés, en maintenant la correspondance entre les clés et les valeurs.
Cette fonction est pratique pour les tableaux associatifs.
*/
function ksort(w)
{
var sArr = [];
var tArr = [];
var n = 0;
for (i in w)
{
tArr[n++] = i;
}
//tri du plus petit au plus grand
tArr = tArr.sort();
n = tArr.length;
for (var i=0; i<n; i++) {
sArr[tArr[i]] = w[tArr[i]];
}
return sArr;
}
/*
array krsort ( array $array)
krsort() trie le tableau array en ordre inverse et suivant les clés, en maintenant la correspondance entre les clés et les valeurs.
Cette fonction est pratique pour les tableaux associatifs.
*/
function krsort(w)
{
var sArr = [];
var tArr = [];
var n = 0;
for (i in w)
{
tArr[n++] = i;
}
//tri du plus grand au plus petit
tArr = tArr.sort(function(a,b){return (b - a);});
n = tArr.length;
for (var i=0; i<n; i++)
{
sArr[tArr[i]] = w[tArr[i]];
}
return sArr;
}
J'en profite pour vous annoncer la naissance prochaine d'un projet sous Adobe Air. A ce propos je cherche des Alpha-testeurs (oui, à ce stade on peut parler d'Alpha plutôt que de bêta) donc n'hésitez pas à vous faire connaître en commentaire.