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 :

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 !
Donc si je trie mon tableau par la colonne "nom", j'obtiendrai donc dans l'ordre :
"developpez","google","microsoft"
Et si je trie par notes, j'aurai :
"developpez","google","microsoft"

...

Non finalement, on va rajouter un Linux pour mieux comprendre :
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';
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")

Voici ma fonction de tri par colonnes

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;
En gros, je parcours tous les éléments des colonnes "columnName" et ajoute un petit suffixe.
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