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 :

Je ne comprend pourquoi mon code ne fonctionne pas


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Je ne comprend pourquoi mon code ne fonctionne pas
    Bonjour à tous, j'apprends le JavaScript et j'ai essayé pour m'entrainer de faire un code qui pourrait remettre dans l'ordre numérique la contenance d'un tableau alors le voici (je le lance tout simplement sur FireFox) :

    Code HTML : 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
    <!DOCTYPE html>
    <html>
        <head>
            <script>
     
                var tableau = [3, 64, 21, 93, 23, 45, 54, 12]
                    var resultat = tableau 
                        for (var i = 0; i < resultat.length; i++) {
                            if (resultat[i] > resultat[i + 1]) { 
                                    var tmp = resultat[i + 1]    
                                    resultat[i + 1] = resultat[i] 
                                    resultat[i] = tmp              
                            }
                            console.log(resultat[i] + ",")
                        }
     
            </script>
        </head>
        <body>
        </body>
    </html>

    Mais malheureusement cela donne :

    3, 21, 64, 23, 45, 54, 12, 93,

    Alors, j'aimerais bien savoir qu'est ce qui ne va pas avec mon code. Je suis bien aller voir sur internet d'autre façon de trier par ordre numérique un tableau mais ce qui m'intéresse est de savoir quelle est mon erreur.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Bonsoir,
    As-tu entendu parler de la méthode sort() de l'objet Array?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Non je n'en ai pas encore entendu parler, est ce que tu pourrais m'éclaircir sur le sujet ?

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Tu as cherché un peu? beaucoup?

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log([3, 64, 21, 93, 23, 45, 54, 12].sort((a,b)=>a-b));

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Après, ta méthode intuitive est presque opérationnelle; ce que tu tentes s'appelle un tri à bulles. Et tu as juste oublié qu'il fallait décrémenter la variable de 2 à chaque passage...
    Et avec une syntaxe moins bavarde:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let tableau=[3, 64, 21, 93, 23, 45, 54, 12]
     
    for (let i = 0; i < tableau.length; i++) {
    	if (tableau[i] > tableau[i+1]) { 
    		tableau.splice(i,2,tableau[i+1],tableau[i]);
    		i-=2             
    	}
    }
     
    console.log(tableau)

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Alors déjà merci beaucoup pour tes réponses et si j'ai bien compris le problème c'est que à la fin du premier passage i ne sera plus égal à 0 alors il faut juste lui remettre la valeur de 0 ?

    (J'ai essayé et effectivement cela fonctionne bien mais je te pose tout de même la question pour être sur d'avoir bien compris.)

    Et je suis aller voir ce qu'était .sort() et effectivement c'est une manière bien plus simple de faire ce que je voulais faire.

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Tu as compris: on trie les éléments par paire mais dès que a > b, il faut revenir en arrière pour tester la supériorité par rapport au nombre précédent;

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

Discussions similaires

  1. [XL-2010] Pourquoi mon code ne fonctionne plus si je verrouille le projet à l'affichage ?
    Par Mic13710 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/11/2017, 18h45
  2. Pourquoi mon code ne fonctionne pas ?
    Par yoyo781 dans le forum VBA Word
    Réponses: 3
    Dernier message: 06/06/2017, 02h41
  3. Pourquoi mon code ne fonctionne pas sur Linux
    Par Amaury_35 dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2009, 09h58
  4. Mon code ne fonctionne pas mais pourquoi ?
    Par veriecherie dans le forum ASP
    Réponses: 3
    Dernier message: 01/08/2008, 12h19
  5. pourquoi mon code ne fonctionne pas
    Par jmlb35 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/06/2008, 19h02

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