Partage
  • Partager sur Facebook
  • Partager sur Twitter

Je comprend pas ! affectation dans un tableau

Creer un reprtoire

    15 juin 2018 à 21:14:49

    Bonsoir,

    je sèche sur un truc, j'ai espionné la variable mesContacts , Et je comprend pas pourquoi le contact ne suit pas vers mesContacts[i]  , car en utilisant la méthode push(nouveauContact) sur le tableau mesContacts  c'est censé l'incrémenter vers une place de libre.

    J'ai aussi observé en déboguant que le premier contact par défaut dans la variable mesContacts[0] est bien inscrit mais ensuite le deuxieme contact est réécris dessus, l’effaçant donc mais est aussi écris vers mesContacts[1] .

    Je débute dans ce langage donc n'hésitez pas apporter des détails que je comprenne bien ^^ .

    Voici le code :

    /* 
    Activité : gestion des contacts
    */
    
    // TODO : complétez le programme
    
    //================================ F o n c t i o n   D u   R e p e r t o i r e ===================================================
    
    function menuPrincipal() 
    {
        var choixMenu = 4;
        while( choixMenu < 0 || choixMenu > 2 )
        {
            console.log("1 : Lister les contacts");
            console.log("2 : Ajouter un contact");
            console.log("0 : Quitter");
            choixMenu = Number( prompt("Choisissez une option : ") );
        }
    
        return choixMenu;
    }
    
    
    
    function listerLesContacts()
    {
        console.log("Voici la liste de tous vos contacts :");
        mesContacts.forEach( function(profil)
        {
            console.log(profil.decrire());
        });
        console.log("\n\n");
    }
    
    
    
    function ajouterContact(nouveauContact)
    {
        nouveauContact.prenom = prompt("Entrez le prenom du nouveau contact ");
        nouveauContact.nom = prompt("Entrez le nom du nouveau contact: ");
    
        mesContacts.push(nouveauContact);
    }
    
    
    
    //============== Le R e p e r t o i r e =======================
    console.log("Bienvenue dans le gestionnaire de contacts !");
    
    // Voici mon modèle.
    var FormulaireContact = 
        {
            nom: "",
            prenom: "", 
    
           
            init: function(prenom, nom)  // Que j'utiliserais pour les contacts par défaut et peux être aussi utiliser pour effacer un contact en   mettant tout à "undefined".
            {
                this.prenom = prenom;
                this.nom = nom;
            },
    
            decrire: function()
            {
                var description = "Nom : " + this.nom + ", prénom : " + this.prenom;
                return description;
            }
        };
    
    
    var mesContacts = [];
    var nouveauContact = Object.create(FormulaireContact);
    
    // Inscription des contacts par défaut
    nouveauContact.init("Carole" , "Lévisse");
    mesContacts.push(nouveauContact);
    
    
    nouveauContact.init("Mélodie" , "Nelsonne");
    mesContacts.push(nouveauContact);
    
    
    //========== Lancement des fenêtres ==============================
    var CONTINUER = 1, QUITTER = 0;
    while(CONTINUER)
    {
        switch(menuPrincipal())
        {
            case 0:
                CONTINUER = QUITTER;
                break;
            case 1: 
                listerLesContacts();
                break;
            case 2:
                ajouterContact(nouveauContact);
                console.log("Le nouveau contact a été ajouté");
                break;
    
            default: 
                console.log("Tu as un gros soucis dans le code");
                break;
        }
    }
    
    console.log("Au revoir !");
    
    



    ...

    • Partager sur Facebook
    • Partager sur Twitter
    Steins;Gates too too roo
      16 juin 2018 à 9:23:59

      Up
      • Partager sur Facebook
      • Partager sur Twitter
      Steins;Gates too too roo
        16 juin 2018 à 9:31:50

        E.Honda a écrit:

        Up

         Attention il faut attendre 24H avant de faire un UP, sinon cela est considérer comme du flood. Fait attention la prochaine fois!

        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2018 à 11:59:56

          D'accord ^^
          • Partager sur Facebook
          • Partager sur Twitter
          Steins;Gates too too roo
            16 juin 2018 à 13:29:10

            Le pb n'est pas lié au tableau, mais au fait que tu as modifié ta variable nouveauContact.

            J'ai mis un commentaire là où cela se produit :

            var mesContacts = [];
            var nouveauContact = Object.create(FormulaireContact);
             
            // Inscription des contacts par défaut
            nouveauContact.init("Carole" , "Lévisse");
            mesContacts.push(nouveauContact);
             
             
            nouveauContact.init("Mélodie" , "Nelsonne"); // modification de nouveauContact et donc de mesContacts[0]
            mesContacts.push(nouveauContact);

            La solution est de créer une nouvelle variable tout simplement :

            var mesContacts = [];
             
            // Inscription des contacts par défaut
            var contact1 = Object.create(FormulaireContact);
            contact1.init("Carole" , "Lévisse");
            mesContacts.push(contact1);
            
            var contact2 = Object.create(FormulaireContact);
            contact2.init("Mélodie" , "Nelsonne");
            mesContacts.push(contact2);

            -
            Edité par SpaceIn 16 juin 2018 à 13:29:51

            • Partager sur Facebook
            • Partager sur Twitter

            Je comprend pas ! affectation dans un tableau

            × 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