Vérifier si une valeur est déja dans un tableau

julesdev -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
J'ai un petit soucis en effet je ne trouve pas une manière de vérifier si un élément est déjà dans un tableau... je m'expliqe :


while (nombre_genere est déjà dans question posé) {
nombre_genere = Math.floor(Math.random() * (Object.keys(contenu_quiz).length));
questionPosees.push(nombre_genere);
}


en gros dans la ligne 1 j'aimerai ajouter ma condition dans le while c'est a dire "tant que le nombre généré appartient au tableau questionPosees continue de générer un nouveau nombre.

merci d'avance pour votre aide !!

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    0
    1. julesdev
       
      bonjour je ne comprend pas trop quoi faire avec indexOf parce que normalement c'est seulement pour donner la position d'un élément dans le tableau non ?
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Tu as lu la documentation au moins ?
      Et puis.... si tu as une position... c'est bien qu'il existe.... :-)
      Dans le cas où l'élément n'est pas dans l'array... il retourne -1
      0
    3. julesdev
       
      while (questionPosees.indexOf(nombre_genere) != -1) {
      nombre_genere = Math.floor(Math.random() * (Object.keys(contenu_quiz).length));
      questionPosees.push(nombre_genere);
      }

      j'ai éssayé ca mais ca ne marche pas
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Que contient ta variable contenu_quiz ? (où et avec quel code est-elle initialisée ? )
      Que contient ta variable questionPosees ? (où et avec quel code est-elle initialisée ? )
      As tu fais des console.log dans ton code pour voir ce qui se passe ?
      0
    5. julesdev
       
      je n'ai pas fait de console.log je t'avoue que je ne sais pas trop ou les placés...
      contenu_quiz = {
      			0: {question: "Quel(le) est l'acteur ou l'actrice à avoir remporté le plus d'oscars ?",
      				reponse1: "Jack Nicholson",
      				reponse2: "Robert De Niro",
      				reponse3: "Katharine Hepburn",
      				reponse4: "Meryl Streep",
      				bonne_reponse: "Katharine Hepburn",
      				val_reponse: "reponse_3",
      				url_img: "url('images/images_quizz/oscars.jpg')",
      			},
      			1: {question: "Qui est la personne la plus récompensée dans l'histoire des césars ?",
      				reponse1: "Catherine Deneuve",
      				reponse2: "Luc Besson",
      				reponse3: "Agnès Varda",
      				reponse4: "Jacques Audiard",
      				bonne_reponse: "Jacques Audiard",
      				val_reponse: "reponse_4",
      				url_img: "url('images/images_quizz/cesar.jpg')",
      			},
      			2: {question: "Parmis tous ces Westerns lequel est un film de Sergio Leone ?",
      				reponse1: "Le Bon, la Brute et le Truand",
      				reponse2: "Pat Garrett et Billy le Kid",
      				reponse3: "Danse avec les loups",
      				reponse4: "La Prisonnière du désert",
      				bonne_reponse: "Le Bon, la Brute et le Truand",
      				val_reponse: "reponse_1",
      				url_img: "url('images/images_quizz/western.jpg')",
      			},
      			3: {question: "Qui prononce cette phrase dans le film Fight Club « Les choses que l’on possède finissent par nous posséder » ?",
      				reponse1: "Brad Pitt",
      				reponse2: "Edward Norton",
      				reponse3: "Meat Loaf",
      				reponse4: "Jared Leto",
      				bonne_reponse: "Brad Pitt",
      				val_reponse: "reponse_1",
      				url_img: "url('images/images_quizz/fight_club.jpg')",
      			},
      			4: {question: "Quel acteur tient le rôle de Christian dans le film  Moulin Rouge  ?",
      				reponse1: "Colin Farrell",
      				reponse2: "Ewan McGregor",
      				reponse3: "Edward Norton",
      				reponse4: "Jim Carrey",
      				bonne_reponse: "Ewan McGregor",
      				val_reponse: "reponse_2",
      				url_img: "url('images/images_quizz/moulin_rouge.jpg')",
      			},
      			5: {question: "Quel acteur français prononce cette phrase dans le film dans Astérix et Obélix : Mission Cléopâtre « Excusez-moi d’en faire un sac, mais je vais finir dans un crocodile peut-être ! »",
      				reponse1: "Jamel Debbouze",
      				reponse2: "Alain Chabat",
      				reponse3: "Édouard Baer",
      				reponse4: "Gérard Darmon",
      				bonne_reponse: "Jamel Debbouze",
      				val_reponse: "reponse_1",
      				url_img: "url('images/images_quizz/aff_asterix.jpg')",
      			},
      			6: {question: "À quel réalisateur doit-on le film « Maps to the Stars » ?",
      				reponse1: "James Cameron",
      				reponse2: "David Cronenberg",
      				reponse3: "Jim Jarmusch",
      				reponse4: "Michael Winterbottom",
      				bonne_reponse: "David Cronenberg",
      				val_reponse: "reponse_2",
      				url_img: "url('images/images_quizz/Maps_to_the_Stars.jpg')",
      			},
      			7: {question: "Dans quel film de Tarantino entend-on cette réplique « C’est à une demi-heure d’ici. J’y suis dans dix minutes » ?",
      				reponse1: "Pulp Fiction",
      				reponse2: "Reservoir Dogs",
      				reponse3: "Jackie Brown",
      				reponse4: "Kill Bill",
      				bonne_reponse: "Pulp Fiction",
      				val_reponse: "reponse_1",
      				url_img: "url('images/images_quizz/quentin-tarantino.jpg')",
      			},
      			8: {question: "Quel acteur de la Comédie française a réalisé le film « Les garçons et Guillaume, à table ! » ?",
      				reponse1: "Lorànt Deutsch",
      				reponse2: "Pascal Elbé",
      				reponse3: "Guillaume Galienne",
      				reponse4: "Clovis Cornillac",
      				bonne_reponse: "Guillaume Galienne",
      				val_reponse: "reponse_3",
      				url_img: "url('images/images_quizz/a_table.jpg')",
      			},
      			9: {question: "Dans quel film entend-on cette réplique « J’adore l’odeur du napalm au petit matin » ?",
      				reponse1: "Full Metal Jacket",
      				reponse2: "Voyage au bout de l’Enfer",
      				reponse3: "Apocalypse Now",
      				reponse4: "Les Sentiers de la Gloire",
      				bonne_reponse: "Apocalypse Now",
      				val_reponse: "reponse_3",
      				url_img: "url('images/images_quizz/napalm.jpeg')",
      			},
      			10: {question: "Quelle actrice est l’héroïne du film des frères Dardenne « Deux jours, une nuit » ?",
      				reponse1: "Marion Cotillard",
      				reponse2: "Zoé Félix",
      				reponse3: "Sylvie Testud",
      				reponse4: "Émilie Dequenne",
      				bonne_reponse: "Marion Cotillard",
      				val_reponse: "reponse_1",
      				url_img: "url('images/images_quizz/deuxjours.jpg')",
      			},
      		}

      voici comment est appelé contenu quiz
      var nombre_genere,
      	contenu_quiz,
      	nbre_de_questions = 0,
      	score = 0,
      	questionPosees = [];

      et question posé est appelée de cette manière au tout début du code je pense que l'erreur est ici
      0