使用 .includes 检查用户输入(测验问题的答案)是否与我的嵌套数组中的正确答案之一匹配时出现问题
Problem checking if user input (answer to a quiz question) matches one of the correct answers in my nested array using .includes
目标:
我的目标是将用户输入(测验问题的答案)与(嵌套)数组中的正确答案列表进行比较。例如,问题可能是:说出一个德国汽车品牌,答案可以是以下之一:[“Volkswagen”、“Audi”、“Opel”、“Porsche”等]。如果用户输入这些答案中的任何一个,该函数应该 return 为真,并且加起来是正确回答问题的总数。如果所有问题都得到正确回答,我想用一条给用户的消息结束代码:
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.includes(answer) 遍历两个嵌套的答案数组不起作用。我读到 .includes 不适用于嵌套数组,这是真的吗?我的其他只有一个答案的测验问题,例如:法国的首都是什么,可以很容易地与使用此基本代码的用户输入进行比较:
numberCorrect = 0;
var answer = document.querySelector("#input0").value;
if (correctAnswers[0] == answer) {
numberCorrect++;
}
上面的代码正确地将 1 添加到 correctAnswers。
但是,当到达包含多个可能答案(例如德国汽车品牌)的嵌套数组时,我的 correctAnswers.includes 没有 work/add 到总数正确:
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)
目标: 我的目标是将用户输入(测验问题的答案)与(嵌套)数组中的正确答案列表进行比较。例如,问题可能是:说出一个德国汽车品牌,答案可以是以下之一:[“Volkswagen”、“Audi”、“Opel”、“Porsche”等]。如果用户输入这些答案中的任何一个,该函数应该 return 为真,并且加起来是正确回答问题的总数。如果所有问题都得到正确回答,我想用一条给用户的消息结束代码:
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.includes(answer) 遍历两个嵌套的答案数组不起作用。我读到 .includes 不适用于嵌套数组,这是真的吗?我的其他只有一个答案的测验问题,例如:法国的首都是什么,可以很容易地与使用此基本代码的用户输入进行比较:
numberCorrect = 0;
var answer = document.querySelector("#input0").value;
if (correctAnswers[0] == answer) {
numberCorrect++;
}
上面的代码正确地将 1 添加到 correctAnswers。
但是,当到达包含多个可能答案(例如德国汽车品牌)的嵌套数组时,我的 correctAnswers.includes 没有 work/add 到总数正确:
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)