JavaScript: преобразовать псевдокод в JavaScript код - PullRequest
0 голосов
/ 27 марта 2020

JavaScript

Я рассмотрел следующий псевдокод:

for answer in answers {
    if(answer in selectedAnswers){
        if(selectedAnswer in rightAnswers)
             // Code if answer is right
        }    
        else {
            // Code if answer is wrong
        }
    }
}

И я попытался реализовать код в JavaScript, но почему-то я не хочу добиться успеха .

currentAnswers = Object.keys(currentQuestion.answers);
currentSelectedAnswers[buttonClicked] = this.id.split('-')[5]; 
currentRightAnswers = currentQuestion.rights;

    for(var answer in currentAnswers) 
    {
        if(currentSelectedAnswers.includes(answer))
        {
            if(currentRightAnswers.includes(currentSelectedAnswers))
            {
                console.log("TRUE");
            }
            else 
            { 
                console.log("FALSE");
            } 
        }
    }


A snippet of a question of my JSON File:

                    "answers": {
                        "1": '...sind eigenständig ausführbare Programme.',
                        "2": '...müssen in der gleichen Programmiersprache wie die Anwendung geschrieben worden sein.',
                        "3": '...müssen in Assemblersprache geschrieben worden sein.',
                        "4": '...können beim Compilieren des Programms statisch gelinkt werden.',
                        "5": '...können zur Laufzeit des Programms dynamisch gelinkt werden.',
                        "6": '...müssen zum Compilieren des Programms im Quelltext vorliegen.'
                    },
                    "rights": {
                        "1": "4",
                        "2": "5" 
                    },

Но я получаю следующую ошибку:

error

Надеюсь, кто-то может мне помочь?

Я хочу выделить два правильных ответа и выделить выделенные два неправильных ответа.

currentAnswers объявляется из любой функции в верхней части ....

currentSelectedAnswers is объявляется в buttonClick Событие кнопки ответа, если я нажимаю кнопку ответа, будет выполняться функция с for для l oop ...

currentRightAnswers объявляется в функции с for для l oop при вершина этого ....

THE VALIDATION FUNCTION WHICH CHECK IF THE ANSWERS ARE WRONG OR RIGHT
var currentSelectedAnswers = [];
var currentAnswers = [];
var currentAnswers = Object.keys(currentQuestion.answers);

function validateEasyTwoAnswersQuestionAnswer() {
    console.log("validateEasyTwoAnswersQuestionAnswer");
    $(".answer-btn").hide();
    var currentRightAnswers = [];
    currentRightAnswers = currentQuestion.rights;
    for(var answer in currentAnswers) 
    {
        if(currentSelectedAnswers.includes(answer))
        {
            if(currentRightAnswers.includes(currentSelectedAnswers))
            {
                console.log("TRUE");
            }
            else 
            { 
                console.log("FALSE");
            } 
        }
    }
    $(".continue-btn").show();
}



IF AN ANSWER CLICKED THE CLICK EVENT WILL EXECUDE
button.addEventListener("click", function(e) {
            if(buttonClicked == 2)
            {
              e.preventDefault();
            }
            else {
                buttonClicked++;
                selectAnswer(this);
                console.log(this.id);
                currentSelectedAnswers[buttonClicked] = this.id.split('-')[5];
                console.log(currentSelectedAnswers);
            }
        });
        

1 Ответ

3 голосов
/ 27 марта 2020

currentRightAnswers.includes не является функцией

Я полагаю, вы пытаетесь вызвать функцию Array.prototype.includes . Это часть Array объектов, но currentRightAnswers не является массивом. Это просто объект.

Быстрое решение проблемы - определить свойство rights как Array, например, в вашем файле JSON (обратите внимание на [] вместо {}:

{
  "answers": {
    "1": '...sind eigenständig ausführbare Programme.',
    "2": '...müssen in der gleichen Programmiersprache wie die Anwendung geschrieben worden sein.',
    "3": '...müssen in Assemblersprache geschrieben worden sein.',
    "4": '...können beim Compilieren des Programms statisch gelinkt werden.',
    "5": '...können zur Laufzeit des Programms dynamisch gelinkt werden.',
    "6": '...müssen zum Compilieren des Programms im Quelltext vorliegen.'
  },
  "rights": [
    "4",
    "5" 
  ]
}
...