I don't understand why when I write pasapalabra at the prompt, it enters the condition that there is an alert that says "you have failed".
In theory it should enter the condition of (obj.answer === "pasapalabra") but it always enters the condition of (obj.answer != userAnswer && obj.answer != "pasapalabra").
var questions = [
{ letter: "a", answer: "abducir", status: 0, question: ("CON LA A.") },
{ letter: "b", answer: "bingo", status: 0, question: ("CON LA B.") },
{ letter: "c", answer: "churumbel", status: 0, question: ("CON LA C.") },
]
function pasapalabra(myObject) {
function pregunta() {
var acertados = 0;
var fallados = 0;
myObject.forEach(function(obj){
var userAnswer = prompt(obj.question);
console.log(userAnswer)
if (obj.answer === userAnswer) {
alert("Has acertado!!");
obj.status = 2;
acertados++;
} else if (obj.answer != userAnswer && obj.answer != "pasapalabra") {
alert("Has fallado!!");
obj.status = 0;
fallados++;
} else if (obj.answer === "pasapalabra"){
obj.status = 1;
console.log("Pasapalabra")
} else {
console.log("Has salido")
}
})
console.log("Aciertos: " + acertados)
console.log("Fallos: " + fallados)
}
pregunta();
}
pasapalabra(questions);
The problem is that you should change the comparisons with
"pasapalabra"
:obj.answer != "pasapalabra"
=>userAnswer != "pasapalabra"
obj.answer === "pasapalabra"
=>userAnswer === "pasapalabra"
Another good practice would be to ensure that the comparisons ignore case (since the user can enter capital letters, which would no longer accept the answer as valid), as easy to do as:
userAnswer != "pasapalabra"
=>userAnswer.toLowerCase() != "pasapalabra"
userAnswer === "pasapalabra"
=>userAnswer.toLowerCase() === "pasapalabra"
obj.answer === userAnswer
=>obj.answer === userAnswer.toLowerCase()
etc...
Hope this can help you :)