0

目标: 我的目标是将用户输入(对测验问题的答案)与(嵌套)数组中的正确答案列表进行比较。例如,问题可以是:命名一个德国汽车品牌,答案可以是以下之一:[“大众”、“奥迪”、“欧宝”、“保时捷”等]。如果用户输入了这些答案中的任何一个,该函数应该返回 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.includes(answer) 遍历两个嵌套的答案数组不起作用。我读到 .includes 不适用于嵌套数组,这是真的吗?我的其他有一个答案的测验问题,例如:法国的首都是什么,很容易与使用此基本代码的用户输入进行比较:

numberCorrect = 0;

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

上面的代码正确地将 1 加到了正确答案中。

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

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

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

correctAnswers[3].includes(answer) 

有没有人可以帮忙?提前致谢!

4

1 回答 1

0

您可以使用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)

于 2021-09-26T15:07:20.407 回答