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 :

Tri Array Multidim. avec valeurs égales


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut Tri Array Multidim. avec valeurs égales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function tri( a, b )
    {
     
    //return a[0] - b[0];
    //ou
     
    var v1 = parseInt(a[0]);
    var v2 = parseInt(b[0]);
    if ( v1 < v2 ) return -1;
    if ( v1 > v2 ) return 1;
    return 0;
     
    }
    Mon problème:
    un tableau trié sur une clé ayant des valeurs égales ne se tri pas correctement. Souvent la clé du milieu (c'est à dire ayant pour indice la moitié du nombre d'entrées) se retrouve en tête du tableau et le reste inchangé.

    Ex:

    tableau initial

    0 => 0
    1 => 0
    2 => 0
    3 => 0
    4 => 0
    5 => 0
    6 => 0
    7 => 0
    8 => 0
    9 => 0
    10 => 0

    devient

    5 => 0
    0 => 0
    2 => 0
    3 => 0
    4 => 0
    1 => 0
    6 => 0
    7 => 0
    8 => 0
    9 => 0
    10 => 0

    Merci pour votre aide.

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Heu... deux choses que je ne comprends pas à la lecture de ton post :

    - pourquoi parler de tableau multidimensionnel ?

    - quel est le problème exactement... ? Les indices sont numériques et non pas des chaines, donc "après tri" sur un tableau dont toutes les valeurs sont à 0, le tableau a la même longueur, des indices numériques... il est identique au tableau avant le tri.... non ? A quel niveau est-ce que ça pose problème ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Heu... deux choses que je ne comprends pas à la lecture de ton post :
    - pourquoi parler de tableau multidimensionnel ?
    Tableau multidimensionnel car ... c'est l'une des utilisations spécifique à la fonction personnalisé dans un tri. Lors d'une récupération des éléments d'une BDD j'ai un tableau contenant les n entrées de ma BDD, où chacune correspond à un nouveau tableau avec toutes ses colonnes (nom, prénom, age, ...). D'où l'utilisation d'une fonction personnalisé pour faire un tri sur une colonne spécifique.

    Citation Envoyé par RomainVALERI Voir le message
    - quel est le problème exactement... ? Les indices sont numériques et non pas des chaines, donc "après tri" sur un tableau dont toutes les valeurs sont à 0, le tableau a la même longueur, des indices numériques... il est identique au tableau avant le tri.... non ? A quel niveau est-ce que ça pose problème ?
    Je reprends mon exemple précédent d'exploitation d'une BDD. Disons que nous avons :
    table[0]["sexe"] = masculin
    table[0]["prenom"] = jimmy
    table[0]["age"] = 30
    table[1]["sexe"] = masculin
    table[1]["prenom"] = romain
    table[1]["age"] = 30
    table[2]["sexe"] = masculin
    table[2]["prenom"] = bob
    table[2]["age"] = 30
    Avec un tri sur l'âge (valeur numérique) le tableau ne devrait pas changer d'état ... puisque pour les 3 entrées l'âge est égal à 30.
    OR il se trouve qu'à partir d'un certain nombre d'entrée; le tableau change d'ordre.

  4. #4
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Bon, ça se précise mais... pas encore tout-à-fait

    La seconde "dimension" de ton tableau est basée sur des indices numériques (ce qui, en effet, suite au comportement que tu signales, pourrait poser problème) ? Ou bien sur des clefs sous formes de chaines (le principe du tableau associatif ou hash, en fait), comme dans l'exemple que tu donnes ici :
    table[0]["sexe"] = masculin
    table[0]["prenom"] = jimmy
    table[0]["age"] = 30
    table[1]["sexe"] = masculin
    table[1]["prenom"] = romain
    table[1]["age"] = 30
    table[2]["sexe"] = masculin
    table[2]["prenom"] = bob
    table[2]["age"] = 30
    ?

    Parce que je ne vois pas en quoi l'extrait ci-dessus est différent de :
    table[0]["sexe"] = masculin
    table[0]["age"] = 30
    table[0]["prenom"] = jimmy
    table[1]["prenom"] = romain
    table[1]["sexe"] = masculin
    table[1]["age"] = 30
    table[2]["age"] = 30
    table[2]["sexe"] = masculin
    table[2]["prenom"] = bob
    ?

    Tu accèdes aux éléments de la même manière avant et après traitement, donc le problème n'est pas ici mais en aval, dans un traitement que tu dois faire après cette étape, j'imagine... ^^

    >>> Dis-nous ce que tu veux faire avec le tableau "trié" mais qui ne fonctionne pas (affichage, calcul, etc.)

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    C'est bien au premier niveau, c'est à dire dans le tableau principal, celui que je veux trier en fait, que ce passe mon problème.

    table[0]["sexe"] = masculin
    table[0]["prenom"] = jimmy
    table[0]["age"] = 30
    table[1]["sexe"] = masculin
    table[1]["prenom"] = romain
    table[1]["age"] = 30
    table[2]["sexe"] = masculin
    table[2]["prenom"] = bob
    table[2]["age"] = 30
    ...

    en triant table par rapport à l'âge des entrées (sous tableaux), en ayant tout les âges identiques, le tableau ne devrait pas bouger. En fait je me retrouve avec par exemple:

    table[0]["sexe"] = masculin
    table[0]["prenom"] = romain
    table[0]["age"] = 30
    table[1]["sexe"] = masculin
    table[1]["prenom"] = bob
    table[1]["age"] = 30
    table[2]["sexe"] = masculin
    table[2]["prenom"] = jimmy
    table[2]["age"] = 30
    ...
    ?

    Les valeurs, entrées, ou bien encore sous tableaux comme vous voulez, ont changé d'indice. Pourquoi?

  6. #6
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Je crois qu'il faudrait voir un peu de code pour s'y retrouver : montre-nous comment est appelée ta fonction de tri, avec un peu de contexte si possible

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] TRI.Paiements avec valeurs filtrées
    Par Bobby362 dans le forum Excel
    Réponses: 0
    Dernier message: 17/01/2012, 12h23
  2. [XL-2003] Graphique avec tri par plages de valeurs
    Par johannj dans le forum Excel
    Réponses: 4
    Dernier message: 05/01/2011, 09h16
  3. array.select avec valeurs boloolean d'Oracle
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 11/05/2009, 14h50
  4. Réponses: 5
    Dernier message: 10/12/2007, 15h24
  5. PB avec valeur retour array
    Par richton95 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/01/2006, 15h33

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