Partage
  • Partager sur Facebook
  • Partager sur Twitter

JS - Afficher contact "undefined"

Utilisation des class / JS

    5 juillet 2019 à 13:52:13

    Bonjour,

    Après des heures à modifier / refaire mon code / chercher des réponses sur les forums, je me permets de vous solliciter pour le dernier exercice JS du cours "Apprenez à coder avec JavaScript".

    Je cherche à afficher les informations " nom" et "prénom", récupérées dans le prompt.

    La liste de contacts qui doit s'afficher m'annonce toujours "undefined" et je n'arrive pas à fixer le souci... Il y a peut-être une notion que j'ai mal cernée mais je ne vois pas/plus rien dans ce code ^^ 

    Merci à qui prendra le temps de me répondre !

    class  Contact {
        constructor (nom, prenom) {
            this.nom = nom;
            this.prenom = prenom;
        }
    }
    
    function afficherContacts() {
        let listeContact = [];
        for(let contact of listeContact) {
           console.log(`Nom : ${contact.nom}, prénom : ${contact.prenom}`);
        }
    }
    
    console.log("Bienvenue dans le gestionnaire de contacts !");
    let popin = prompt("Choisissez une option");
    
    while (popin !== "0") {
    
        console.log("1 : Lister les contacts");
        console.log("2 : Ajouter un contact");
        console.log("0 : Quitter");
    
        if (popin == "1") {
            console.log("Voici la liste de vos contacts :");
            const listeContact = afficherContacts();
            console.log(listeContact);
        
            // listeContact.push(new Contact("Nelsonne", "Mélodie"));
            // console.log(`Nom : '${melodie.nom}, prénom : ${melodie.prenom}`);
    
            // const carole = new Contact("Lévisse", "Carole");
            // console.log(`Nom : ${carole.nom}, prénom : ${carole.prenom}`);
            popin = prompt("Choisissez une option");        
        }
        else if (popin == "2") {
            let nomcontact = prompt("Entrez le nom de votre prochain contact :");
            let prenomcontact = prompt("Entrez le prénom de votre prochain contact :");
            let listeContact = [];
            listeContact.push(new Contact(nomcontact, prenomcontact));
            console.log("Le nouveau contact a bien été ajouté");
            popin = prompt("Choisissez une option");
        }
        else {
            console.log("Je ne connais pas cette commande")
        }
    }
    
    if (popin == "0") {
        console.log("Fin du programme");
    }
    
    
    
    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2019 à 14:15:35

      Salut,

      premier point, ligne 39 tu écrase ton array à chaque fois que tu ajoute un contact c'est pas bon.

      deuxieme point, ligne 9 tu écrase à nouveau ton array.

      troisième point, ligne 26, tu récupère la réponse de afficherContacts, mais cette fonction renvoie void. Le mieux reste de l'appeller, sans récupérer sa réponse et sans faire de console.log

      Quatrième point, ton while fait planter la page si tu cancel le prompt^^

      Et enfin dernier point tu n'affiche pas dans la console les options disponibles avant d'afficher le prompt.

      https://jsfiddle.net/lk77/axbespfc/

      Il reste des choses à corriger, notamment le while, j'ai juste mis un timeout de 1000, pour éviter de faire planter la page.

      -
      Edité par lk77 5 juillet 2019 à 14:26:20

      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2019 à 15:01:03

        Merci beaucoup pour tes explications Ik77 !

        Script done ;)

        class  Contact {
            constructor (nom, prenom) {
                this.nom = nom;
                this.prenom = prenom;
            }
        }
        let listeContact = [new Contact("Nelsonne", "Mélodie"), new Contact("Lévisse", "Carole")];
        
        function afficherContacts() {
            for(let contact of listeContact) {
               console.log(`Nom : ${contact.nom}, prénom : ${contact.prenom}`);
            }
        }
        
        console.log("Bienvenue dans le gestionnaire de contacts !");
        console.log("1 : Lister les contacts");
        console.log("2 : Ajouter un contact");
        console.log("0 : Quitter");
        let popin = prompt("Choisissez une option");
        let timeout = 1000;
        
        while (popin !== "0" && timeout > 0) {
            timeout--;
        
            console.log("1 : Lister les contacts");
            console.log("2 : Ajouter un contact");
            console.log("0 : Quitter");
        
            if (popin == "1") {
                console.log("Voici la liste de vos contacts :");
                afficherContacts();  
                popin = prompt("Choisissez une option");        
            }
            else if (popin == "2") {
                let nomcontact = prompt("Entrez le nom de votre prochain contact :");
                let prenomcontact = prompt("Entrez le prénom de votre prochain contact :");
                listeContact.push(new Contact(nomcontact, prenomcontact));
                console.log("Le nouveau contact a bien été ajouté");
                popin = prompt("Choisissez une option");
            }
            else {
                console.log("Je ne connais pas cette commande")
            }
        }
        
        if (popin == "0") {
            console.log("Fin du programme");
        }
        
        
        



        • Partager sur Facebook
        • Partager sur Twitter

        JS - Afficher contact "undefined"

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown