JavaScript - ¿Cómo mostrar solo una pregunta de un objeto el cual contiene tres más?

 
Vista:

¿Cómo mostrar solo una pregunta de un objeto el cual contiene tres más?

Publicado por Edwin (1 intervención) el 25/01/2021 12:54:53
¡Hola!

Estoy haciendo un quiz en el que el usuario tiene que responder algunas preguntas de cada letra del abecedario.

Tengo un objeto con cada letra y cada letra tiene tres posibles preguntas. Las preguntas se pueden omitir si el usuario no conoce la respuesta y cuando finalice la ronda, volverán a aparecer las respuestas que el usuario ha omitido.

Tengo una propiedad llamada state que controla si la pregunta se omite, es correcta o incorrecta.

El problema es que cuando me salto una pregunta de una letra, la siguiente pregunta que aparece es la segunda pregunta de la misma letra y quiero que aparezca la primera pregunta de la segunda letra.

Ejemplo: la letra A tiene la pregunta A1, A2, A3 y la letra B tiene la pregunta B1, B2, B3. Estoy en la pregunta A1 y no sé la respuesta, así que me salto la pregunta, luego se muestra A2, aquí es cuando en lugar de mostrar A2 quiero mostrar B1.

Esto es lo que tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
let questions = [{
        letter: "a",
        status: 0,
        questionss: [{
                answer: "abduction",
                question: "STARTS WITH A. Act of abducting."
            },
            {
                answer: "abandon",
                question: "STARTS WITH A. To give up; withdraw from"
            },
            {
                answer: "atlas",
                question: "STARTS WITH A. A bound collection of maps."
            }
        ]
    },
    {
        letter: "b",
        status: 0,
        questionss: [{
                answer: "bench",
                question: "STARTS WITH B. A long seat for several persons"
            },
            {
                answer: "border",
                question: "STARTS WITH B. The part or edge of a surface or area that forms its outer boundary."
            },
            {
                answer: "bread",
                question: "STARTS WITH B. a kind of food made of flour or meal that has been mixed with milk or water, made into a dough or batter, with or without yeast or other leavening agent, and baked."
            }
        ]
    },
]
 
let errors = 0;
let correct = 0;
let numOfQuestions = 0;
 
 
function showQuestions() {
 
    while (numOfQuestions < questions.length) {
        for (let i = 0; i < questions.length; i++) {
            for (let j = 0; j < questions[i].questionss.length; j++) {
                if (questions[i].status === 0) {
                    console.log("");
                    console.log(questions[i].questionss[j].question)
                    let a = prompt("Introduce your answer");
 
                    if (a === null) {
                        console.log("")
                        console.log("You exited the game!");
                        return false;
                    }
                    a = a.toLowerCase();
 
                    if (questions[i].questionss[j].answer.toLowerCase() == a) {
                        console.log('¡Correct!');
                        console.log("Your answer: " + a);
                        questions[i].status = 1;
                        correct++;
                        numOfQuestions++
                    } else if (a === "end") {
                        console.log("");
                        console.log("You  have " + correct + "correct answers !");
                        return false;
                    } else if (a === 'skip' || a === "") {
                        console.log("Question skipped");
                    } else {
                        console.log('¡Incorrect!');
                        console.log("Your answer: " + a);
                        questions[i].status = 2;
                        errors++;
                        numOfQuestions++
                    }
                }
            }
        }
    }
    console.log("");
    console.log("Correct: " + correct);
    console.log("Incorrect: " + errors);
 
}
showQuestions()

Sé que de alguna manera necesito hacer algo con la propiedad state, pero no puedo resolverlo. ¿Algunas ideas?

¡Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Cómo mostrar solo una pregunta de un objeto el cual contiene tres más?

Publicado por joel (895 intervenciones) el 25/01/2021 18:26:42
Hola Edwin, no has publicado la parte del código HTML, por lo que no puedo probarlo... pero creo que tienes que añadir un break; debajo del :
1
console.log("Question skipped")

Puedes probarlo y comentar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar