繁体   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