je sèche sur un truc, j'ai espionné la variable mesContacts , Et je comprend pas pourquoi le contact ne suit pas versmesContacts[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 !");
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
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.