使用.includs检查用户输入(问答问题的答案)是否与我的嵌套数组中的一个正确答案匹配



目标:我的目标是将用户输入(问答问题的答案)与(嵌套)数组中的正确答案列表进行比较。例如,问题可以是:说出一个德国汽车品牌的名字,答案可以是以下任何一个:[大众汽车、奥迪、欧宝、保时捷等]。如果用户输入了这两个答案中的任何一个,则函数应返回true,并将其添加到正确回答的问题总数中。如果所有问题都得到了正确的回答,我想在代码结尾给用户一条消息:

if (numberCorrect == quizQuestions.length) {
document.getElementById("correct").innerHTML = "All answers are correct";

quizQuestions数组代码:

const quizQuestions = [
"Wat is de hoofdstad van Frankrijk?",
"Hoeveel benen heeft een spin?",
"Wat is het grootste meer van Nederland?",
"Noem een Duits automerk",
"Noem een Waddeneiland",
"In hoeveel dagen draait de aarde om de zon?",
"Wat is de grootste oceaan ter wereld?"
];

正确答案数组的代码:

const correctAnswers = [
"Parijs",
8,
"IJsselmeer",
["Volkswagen", "Audi", "Opel", "Porsche", "BMW", "Mercedes", "Mercedes-Benz"],
["Texel", "Vlieland", "Terschelling", "Ameland", "Schiermonnikoog"],
365,
"Stille Oceaan"
];

问题:由于某些原因,使用correctAnswers.includs(answer)遍历两个嵌套的答案数组是不起作用的。我读到.includes不适用于嵌套数组,这是真的吗?我的其他问答题只有一个答案,比如:法国首都是什么,可以很容易地与使用以下基本代码的用户输入进行比较:

numberCorrect = 0;
var answer = document.querySelector("#input0").value;
if (correctAnswers[0] == answer) {
numberCorrect++; 
} 

上面的代码正确地将1添加到correctAnswers。

然而,当到达具有多个可能答案的嵌套数组(例如德国汽车品牌)时,我的correctAnswers.includs不起作用/添加到总数中正确:

answer = document.querySelector("#input3").value;
if (correctAnswers.includes(answer) == true) {
numberCorrect++;
} 

此外,我似乎不允许更精确地在父数组中选择正确的索引,如下所示:

correctAnswers[3].includes(answer) 

也许有人能帮忙吗?提前感谢!

您可以使用indexOf检查字符串和数组是否与includes完全相同参见下面的示例

const correctAnswers = [
"Parijs",
8,
"IJsselmeer",
["Volkswagen", "Audi", "Opel", "Porsche", "BMW", "Mercedes", "Mercedes-Benz"],
["Texel", "Vlieland", "Terschelling", "Ameland", "Schiermonnikoog"],
365,
"Stille Oceaan"
];
var isAnsRight = correctAnswers[3].indexOf("Audi") >= 0
console.log(isAnsRight)

最新更新