基本上,我必须使用3category创建一个测验。每个都有5个问题。 我将必须将包含所有问题的选定类别问题从该数组中推送到这个新数组中。我无法这样做。
pushSelectedQuestion() {
for (var i = 0; i < this.getNumberOfQuestion; i++) {
if (usercategory == questionPool[i].category) {
mcqSelected.push(questionPool[i])
return mcqSelected;
}
}
}
usercategory =用户输入。 如果用户选择类别1。 如果(1 == questionPool [1] .category)(如果它与类别匹配),则将其推送。
这是我做不到的部分
答案 0 :(得分:0)
好吧,从您提供的信息来看,这里有一个主要问题-return
语句绝对是缩短循环的方式-因此,即使您没有其他问题,也只会得到第一个匹配项题。其余的将由return语句删除,该语句将停止函数并返回值。
pushSelectedQuestion() {
for (var i = 0; i < this.getNumberOfQuestion; i++) {
if (usercategory == questionPool[i].category) {
mcqSelected.push(questionPool[i])
// the below line is causing this loop to end after the first time through the list.
// Remove it and then put a console.log(mcqSelected);
// here instead to see the value during each iteration of the loop.
return mcqSelected;
}
}
}
尽管有很多方法可以完成您想在这里完成的工作。例如,您可以像这样使用javascript Array.filter
方法
let selectedQuestions = questionPool.filter(question => question.category == userCategory)
答案 1 :(得分:0)
也许我不能正确理解您的问题,但是您不能使用嵌套数组。如果问题是事先分类的。