簡體   English   中英

使用JavaScript在函數內部創建新對象?

[英]Create new objects inside of a function with JavaScript?

因此,我想創建一個函數,如果一個問題的回答錯誤,它將錯誤的答案存儲到一個新對象中? 這樣我可以在最后列出所有錯誤答案?

var answerList = [{question:1, answer:1},{question:2, answer:2},]
var listofWrongAnswers = [];

if (answerSelected != answerlist[1].answer) {
    /* create a new object
       put answerlist[1].question and answerlist[i].answer in new object and push to 
       array ListofWrongAnswers */
}

我不知道如何隨機命名變量? 如果可能的話。

您不能根據當前問題簡單地創建一個新對象嗎?

這樣的事情應該起作用:

if (answerSelected != answerlist[1].answer) {

    listofWrongAnswers.push({question: answerlist[1].question, answer: answerlist[1].answer});
}

但是,您應該使該索引成為參數:

function addToWrongAnswers(answerSelected, idx) {

    if (answerSelected != answerlist[idx].answer) {

        listofWrongAnswers.push({question: answerlist[idx].question, answer: answerlist[idx].answer});
    }
}

我假設您想要這樣的東西:

function getQuestion(number){
    for(var i = 0; i < answerList.length; i++){
        if(answerList[i].question === number){
            return answerList[i];
        }
    }
}

function checkAnswer(questionNumber, answer){
    var question = getQuestion(questionNumber);
    if(answer !== question.answer){
        listofWrongAnswers[question];
    }
}

但是 ,我還假設您將從問題1開始並增加數字,因此,如果您僅使用數組索引而不是遍歷該問題來選擇問題,它將更加簡單。 所以這可能更好:

var answerList = [{question:1, answer:1}, {question:2, answer:2}];
var listofWrongAnswers = [];

function checkAnswer(questionNumber, answer){
    var question = answerList[questionNumber - 1];
    if(answer !== question.answer){
        listofWrongAnswers[question];
    }
}

如果要克隆該問題對象並將其推入該數組,則可以使用

listofWrongAnswer.push({question: answerlist[1].question, answer: answerlist[1].answer});

但是使用此代碼,您將無法使用==運算符比較那些數組中存在的問題對象

listofWrongAnswer[1] == answerlist[1] // It's false

但是,如果您不希望出現這種情況,則只能在錯誤的答案列表中存儲對問題對象的引用:

listofWrongAnswer.push(answerlist[1]);

使用此代碼,您可以使用==運算符比較問題對象

listofWrongAnswer[1] == answerlist[1] // It's true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM