Bonjour,
Je veux ajouter une méthode à l'objet Array de JS. Cette méthode trie un tableau, avec un tri par sélection et affiche l'évolution du tri à l'aide de canvas. Le code est le suivant:

...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Array.prototype.echange=function(i,j){
            var t=this[i]
            this[i]=this[j]
            this[j]=t
            return this
}
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
Array.prototype.visuel=function(ctx,w,h){
            ctx.clearRect(0,0,w,h);
            var qx=w/this.length
            var qy=h/this.max()          
            for (var i=0; i<this.length; i++) {
                ctx.beginPath()
                ctx.arc(qx/2+i*qx,qy/2+ this[i]*qy,1,0,2*Math.PI,true)
                ctx.stroke()
            }          
        }
...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Array.prototype.triVisuel=function(ctx,w,h){
            var aux=this
            aux.visuel(ctx,w,h)
            var c=1
            for (var i=0; i<aux.length-1; i++) {
                for (var j=i+1; j<aux.length; j++) {
                    var min=i
                    if (aux[j]<aux[min]) {
                        min=j
                    }
                    aux=aux.echange(i,min)
                    setTimeout(function(){return function(aux){aux.visuel(ctx,w,h)};},100*c);
                    c++
                }
            }
        }
Toutes mes méthodes fonctionnent sauf la dernière... Il y a un problème avec setTimeout ... et après des heures de recherche, je ne trouve toujours pas ...
Merci pour votre aide,