IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

fonction sort() et reverse()


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par d�faut fonction sort() et reverse()
    Bonjour, j'ai un probl�me avec la fonction sort().

    je cherche � classer par ordre d�croissant la colonne [j][0] du tableau ci-dessous. or quoi que je fasse, elle est toujours en ordre croissant


    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
    18
    19
    20
    21
    22
    23
    24
     
    <script type='text/javascript'>
     
    var column_lengh=150;
    var column_dead_volume=1744;
    var dm=1.18917640398834*Math.pow(10,-9);
    var particul_diameter=5;
     
    var u = new Array();
    var j=0; 
    for (i=0.01; i<=20; i+=0.02)
    {
      j++;
      	u[j]= new Array();
      	u[j][0]=i;
      	u[j][1]=column_dead_volume*i/column_lengh*60;
      	u[j][2]=(i*particul_diameter*0.000000001)/dm;
    	u[j][3]=(Math.pow(u[j][2],0.33)*1+3/u[j][2]+0.1*u[j][2])*particul_diameter;
     
    document.write("Ligne " + u[j][0] + "<br>");
     
     }
    u.sort()
    u.reverse()

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par d�faut
    petit d�tail suppl�mentaire, j'ai 1001 �l�ments dans ma colonne

  3. #3
    Expert confirm�
    Avatar de le_chomeur
    Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2006
    Messages
    3 653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 3 653
    Par d�faut
    tu fait un sort , pui un reverse :-/

    essaye un sort(function(a,b){return a - b})

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par d�faut
    j'ai essay� mais ca ne change rien (toujours par ordre croissant)
    Ce qui est bizarre c'est quand je les fait 3 premi�res colonnes l'ordre est toujours croissant, quand je le fait sur la 3�me colonne, il est d�croissant.

    j'ai �galement essayer en changeant a-b par b-a dans la fonction et ca ne change rien


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <script type='text/javascript'>
     
    var column_lengh=150;
    var column_dead_volume=1744;
    var dm=1.18917640398834*Math.pow(10,-9);
    var particul_diameter=5;
     
     
     
    // creation d'un tableau indice avec les valeur u[j][0] qui demarre à 0.01 incrementé par 0.02 jusqu'à 20, u[j][1] correspond à F(µL/min) dans le tableau excel
    //u[j][2]correspond à nu dans le tableau excel-u[j][3] correpond à H (µm
     
    var u = new Array();
    var j=0; 
    for (i=0.01; i<=20; i+=0.02)
    {
      j++;
      	u[j]= new Array();
      	u[j][0]=i;
      	u[j][1]=column_dead_volume*i/column_lengh*60;
      	u[j][2]=(i*particul_diameter*0.000000001)/dm;
    	u[j][3]=(Math.pow(u[j][2],0.33)*1+3/u[j][2]+0.1*u[j][2])*particul_diameter;
     
    	document.write("Ligne " + u[j][0] + "<br>");
     
     }
     
    u.sort(function(a,b){return a-b})
     
     
     
    </script>

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par d�faut
    infos supplemantaires :

    mes valeurs sont de type d�cimale :
    6.976
    90.688
    104.63999999999999
    118.59199999999998
    .....

    Et la 4�me colonne (celle qui est toujours en d�croissant, non pas la 3�me comme sp�cifi� par erreur dans mon message precedent) est la seule caclul�een fonction des d'autres colonnes

  6. #6
    Expert confirm�
    Avatar de le_chomeur
    Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2006
    Messages
    3 653
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 3 653
    Par d�faut
    je crois qu'il faut faire une fonction sort, en fonction du type des valeurs ( justement avec a et b ) donc je ne comprend pas pkoi �a ne marche pas :-/

  7. #7
    Membre exp�riment�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Par d�faut
    Bonjour,

    Ton tableau est un tableau � 2 dimensions, autrement dit une "matrice".
    Si j'ai bien compris, tu essaies de trier ta matrice selon la valeur de ta premi�re colonne ?

    Lorsque tu appelles la fonction sort() sur ton tableau, ton "comparator" doit prendre en compte le type de variable � trier.

    Ici, ta variable "u" est un tableau de tableau, donc lorsque tu it�res sur ton tableau u, chaque enregistrement est lui-m�me un tableau. Dans ta fonction de comparaison, les variables a et b sont des Array, visiblement, tu souhaites trier sur la premi�re valeur de ces tableaux, modifie donc ta fonction comme ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     
    u.sort(function(a,b){return b[0]-a[0];});
    Ton tableau doit �tre tri� cette fois-ci dans l'ordre d�croissant.

    A+

  8. #8
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par d�faut
    Ca change rien, c'est toujours croissant


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <script type='text/javascript'>
     
    var column_lengh=150;
    var column_dead_volume=1744;
    var dm=1.18917640398834*Math.pow(10,-9);
    var particul_diameter=5;
     
    var u = new Array();
    var j=0; 
    for (i=0.01; i<=20; i+=0.02)
    {
      j++;
      	u[j]= new Array();
      	u[j][0]=i;
      	u[j][1]=column_dead_volume*i/column_lengh*60;
      	u[j][2]=(i*particul_diameter*0.000000001)/dm;
    	u[j][3]=(Math.pow(u[j][2],0.33)*1+3/u[j][2]+0.1*u[j][2])*particul_diameter;
     
    	document.write(u[j][0] + "<br>");
     
     }
     
    u.sort(function(a,b){return b[0]-a[0];});
     
     
    </script>

  9. #9
    Membre exp�riment�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Par d�faut
    Hmmm, comment le vois-tu que c'est toujours croissant ? par rapport � l'affichage sur la page ?

    Ton script se d�roule de la fa�on suivante :
    - Cr�ation du tableau
    - It�ration du tableau
    - Remplissage de la ligne
    - Affichage de la ligne

    - Tri du tableau

    Donc effectivement, l'affichage te montre ton tableau de fa�on croissante, puisque c'est dans cet ordre qu'il est rempli, le tri du tableau n'est fait qu'apr�s l'affichage...
    Si tu parcours de nouveau ton tableau pour afficher les valeurs apr�s le tri, tu auras un tableau tri� de fa�on d�croissante.

    Toutefois, ton tableau n'a pas de valeur � l'indice 0 (tu incr�mentes j � la premi�re it�ration avant de remplir le tableau, donc tu passes directement � 1), il est pr�f�rable d'incr�menter j � la fin du "remplissage".

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <script type='text/javascript'>
     
    var column_lengh=150;
    var column_dead_volume=1744;
    var dm=1.18917640398834*Math.pow(10,-9);
    var particul_diameter=5;
     
    var u = new Array();
    var j=0; 
    for (i=0.01; i<=20; i+=0.02)
    {
      	u[j]= new Array();
      	u[j][0]=i;
      	u[j][1]=column_dead_volume*i/column_lengh*60;
      	u[j][2]=(i*particul_diameter*0.000000001)/dm;
    	u[j][3]=(Math.pow(u[j][2],0.33)*1+3/u[j][2]+0.1*u[j][2])*particul_diameter;
     
    	document.write(u[j][0] + "<br>");
    	j++;
     }
     
    u.sort(function(a,b){return b[0]-a[0];});
     
    document.write("<br>Après tri :<br>");
     
    for (i=0;i<u.length;i++)
    	document.write(u[i][0] + "<br>");
     
    </script>

  10. #10
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par d�faut
    Super BaBeuH effectivement ca marche nickel.
    Merci pour tout

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [STL] D�butant : probl�me utilisation fonction Sort
    Par marcootz dans le forum SL & STL
    R�ponses: 5
    Dernier message: 29/08/2007, 20h19
  2. Param�trer la fonction sort()...
    Par Empty_body dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 12/06/2007, 12h28
  3. [STL]vector de type compos� et fonction sort
    Par LordBob dans le forum SL & STL
    R�ponses: 14
    Dernier message: 21/03/2007, 11h56
  4. [VBA-E]Fonction "Sort" et format
    Par Capsule dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 12/01/2007, 14h29
  5. Probleme fonction sort d'unt list STL
    Par Brouzouf dans le forum Visual C++
    R�ponses: 4
    Dernier message: 27/07/2006, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo