Bonjour à tous.
J'ai tenté de vouloir faire une sorte de ORDER BY, mais en javascript, pour un tableau à deux dimensions bien définies.
Par exemple, mettons que nous avons ceci :
Donc si je trie mon tableau par la colonne "nom", j'obtiendrai donc dans l'ordre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var sitesInternet=Array(); sitesInternet[0]=new Array(); sitesInternet[0]['nom']='developpez'; sitesInternet[0]['note']='10';// genre... sitesInternet[1]=new Array(); sitesInternet[1]['nom']='google'; sitesInternet[1]['note']='9';// Bah ouais quand même sitesInternet[2]=new Array(); sitesInternet[2]['nom']='microsoft'; sitesInternet[2]['note']='0';// Boouh ! VISTA !
"developpez","google","microsoft"
Et si je trie par notes, j'aurai :
"developpez","google","microsoft"
...
Non finalement, on va rajouter un Linux pour mieux comprendre :
Donc on peut obtenir différents ordres en fonction du critère de tri par colonne "nom" ou "note" (respectivement, "developpez","google","linux","microsoft" et "developpez","linux","google","microsoft")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sitesInternet[3]=new Array(); sitesInternet[3]['nom']='linux'; sitesInternet[3]['note']='10';
Voici ma fonction de tri par colonnes
En gros, je parcours tous les éléments des colonnes "columnName" et ajoute un petit suffixe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function userDefinedFunction_sortByColumn(columnName) { var arrayToSort=new Array(); for(i=0;i<this.length;i++) arrayToSort[i]=this[i][columnName]+'-'+i; arrayToSort.sort(); var arrayToReturn=new Array(); for(i=0;i<arrayToSort.length;i++) arrayToReturn[i]=this[arrayToSort[i].replace(/-([0-9]+)$/,'$1')]; this=arrayToReturn; } Array.prototype.sortByColumn=userDefinedFunction_sortByColumn;
La fonction native à javascript sort(), me trie ce qu'il faut, puis je récupère, via expressions régulières les indexs placés pour réordonner mon nouveau tableau.
Le problème : Tu peux pas test le "this=<quelquechose>". Il aime pas.
D'un autre côté, ça me dérange pas, car je pourrais très bien faire un classique "return //to the future", mais je me demandais s'il était possible de le faire, sachant qu'à priori, ma syntaxe me paraissait correcte :/
EDIT : SpaceFrog, m'a dit que c'était dans les contribs... j'avais pas cherché au bon endroit .. .gomen
RE-EDIT : Pour ceux qui cherchent une fonction de tri de tableau à 2 dimensions moins complexe, c'est par ici : http://www.developpez.net/forums/sho...d.php?t=135913
Partager