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 :

Vérification de termes js


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut Vérification de termes js
    Bonjour/Bonsoir à tous !

    J'aimerais réaliser une fonction qui vérifie que 2 tableaux sont identiques.
    Le premier tableau est un tableau de nombres générés aléatoirement, réalisé dans une fonction que j'ai crée plus tôt dans mon code.
    Le second tableau est issu d'un calcul entré par l'utilisateur, auquel j'ai extrait les termes
    J'ai utilisé sort pour que les termes soient rangés dans l'ordre croissant.
    Le problème, est que quand j'appelle ma fonction verification(); mon programme me dit à chaque fois que les plaques ne correspondent pas. J'aimerais savoir s'il n'y avait pas un problème dans mon code, qui empêcherait de fonctionner correctement.
    Merci !

    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
    33
    34
    35
    36
    37
    38
    function verification()
    {
    calcul = prompt("Entrez le calcul");
    termes=/\d+/g;
    operateurs=/[^\d]+/g;
     
    tabChiffres = new Array();
    tabOps = new Array();
    tabChiffres.push(termes); 
    tabOps.push(operateurs); 
    toutesPlaques = plaque.concat(plaque1); // Tableaux crées dans une fonction antérieure
     
    triTtPlaques = new Array();
    triTabChiffres = new Array();
    triTtPlaques = toutesPlaques.sort(); // Je crée un nouveau tableau pour recalculer les termes par la suite avec l'ancien
    triTabChiffres = tabChiffres.sort(); 
     
    // fonction qui vérifie l'égalité des 2 tableaux
    function tabEgaux(triTtPlaques, triTabChiffres)
    {
        if (triTtPlaques.length !== triTabChiffres.length) return false;
        for (var i = 0, len = triTtPlaques.length; i < len; i++){
            if (triTtPlaques[i] !== triTabChiffres[i]){
                return false;
            }
        return true; 
    	}
    	}
    	tabEgaux(triTtPlaques, triTabChiffres);
    if (tabEgaux(triTtPlaques, triTabChiffres) == true)
    	{
    	document.write("Les plaques correspondent");
    	}else{
    		document.write("Les plaques ne correspondent pas");
    		}
     
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Pourquoi un tri par ordre croissant ? Si l'utilisateur intervertit deux réponses, la fonction validera toujours ses résultats. Il vaut mieux garder les index correspondant à l'ordre des calculs.

    A vue de nez, la fonction est bonne. Mais ces tableaux sont-ils vraiment égaux ? Notamment, as-tu fait attention à ce que chaque élément du tableau soit du même type Number ? Des String s'y sont peut-être glissées par erreur, étant donné que c'est le format dans lequel on récupère les saisies utilisateur.

  3. #3
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut
    Merci à toi pour ta réponse !
    J'ai donc supprimé les tableaux que j'avais triés, et j'ai rajouté des boucles for qui convertissent les chaines de caractères des tableaux en nombre. Cependant, malgré cela, j'ai toujours le message "Les plaques ne correspondent pas" qui s'affiche :/
    Voici mon code modifié :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function verification()
    {
    calcul = prompt("Entrez le calcul");
    termes=/\d+/g; // On récupère les termes
    operateurs=/[^\d]+/g; // On récupère les opérateurs
     
    tabChiffres = new Array();
    tabOps = new Array();
    tabChiffres.push(termes); // On insère les termes dans un tableau
    tabOps.push(operateurs); // On insère les opérateurs dans un tableau
    toutesPlaques = plaque.concat(plaque1); // On regroupe nos 2 tableaux en un seul
     
    for(var i=0; i<toutesPlaques.length; i++)
    {
    	toutesPlaques[i] = parseInt(toutesPlaques[i], 10);
    } 
     
    for(var i=0; i<tabChiffres.length; i++)
    { 
    	tabChiffres[i] = parseInt(tabChiffres[i], 10);
    } 
     
    // On va à présent vérifier que les plaques sont les mêmes, en vérifiant l'égalité des deux tableaux
    function tabEgaux(toutesPlaques, tabChiffres)
    {
        if (toutesPlaques.length !== tabChiffres.length) return false;
        for (var i = 0, len = toutesPlaques.length; i < len; i++){
            if (toutesPlaques[i] !== tabChiffres[i]){
                return false;
            }
        return true; 
    	}
    	}
    	tabEgaux(toutesPlaques, tabChiffres);
    if (tabEgaux(toutesPlaques, tabChiffres) == true)
    	{
    	document.write("Les plaques correspondent");
    	}else{
    		document.write("Les plaques ne correspondent pas");
    		}
     
     
    }

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ne pas oublier : Comprendre document.write() en JavaScript.

    Ensuite, ton code ne fait absolument pas ce que tu crois...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    termes=/\d+/g; // On récupère les termes
    operateurs=/[^\d]+/g; // On récupère les opérateurs
    OK, tes variables termes et operateurs contiennent des expressions régulières.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tabChiffres.push(termes); // On insère les termes dans un tableau
    tabOps.push(operateurs); // On insère les opérateurs dans un tableau

    Tes commentaires sont faux. Tu n'insères pas les termes et les opérateurs dans les tableaux mais uniquement les expressions régulières que tu as créées mais jamais utilisées.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut
    Merci pour ta réponse !
    Pour rendre mon code cohérent, comment pourrais-je modifier cette ligne pour ainsi insérer les éléments entrés dans un tableau ?
    Merci

Discussions similaires

  1. set term ^
    Par tux dans le forum Débuter
    Réponses: 8
    Dernier message: 12/10/2004, 20h42
  2. Access me convient-il ? (limites et performances à terme)
    Par Marco le Pouillot dans le forum Access
    Réponses: 4
    Dernier message: 20/10/2003, 12h53
  3. traduction du terme "managed"
    Par sarasvati dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 14/05/2003, 23h01
  4. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48
  5. Réponses: 2
    Dernier message: 22/07/2002, 18h02

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