gpt4 book ai didi

javascript - 在javascript中匹配来自两个数组的元素

转载 作者:行者123 更新时间:2023-11-30 11:21:53 24 4
gpt4 key购买 nike

我正在尝试制作一个小型随机测验生成器,第一个数组包含问题并随机显示(当加载页面或刷新页面时),第二个数组包含答案。

现在,当用户键入答案时,如果该答案来自答案数组,则会显示 正确的 消息,即使该问题的答案不正确,如果答案是不是来自答案数组,显示不正确消息。

我需要一个代码来解决这个问题(我可以在 if...else 中使用 || 和 && 运算符来解决,但是对于超过 5 个条目,代码变得太长且难以维护)在 javascript 和 html 代码下面

//reload whole page
function refreshMe() {
window.location='index.html';
}

const myQs = [
"How many sides has a hexagon", // must always be the first answer from myRs array
"A circle has...degrees?", // must always be the second answer from myRs array
"2^3=...?",
"2+2:2=..?",
"A triangle has....degrees?",
"Square root of 2 is...?" // to be extend up to 500 entries
];


let randomItem = myQs[Math.floor(Math.random()*myQs.length)];

document.getElementById("demo").innerHTML = randomItem;

function userAnswer() {
const check = document.getElementById('answer').value;

const myRs = [
"6",
"360",
"8",
"3",
"180",
"1.41"
];
// the difference between 0 and -1?
if (myRs.indexOf(check) > -1) {
sayMessage = check + " is the correct answer!";
} else {
sayMessage = check + " is not the correct answer....";
}
document.getElementById("userA").innerHTML = sayMessage;
};

对于随机问题,现在每个答案都是正确的,如果键入 myRs 以外的答案,则消息 不正确。我需要一个代码,以便 myQs 数组中的问题与 myRs 数组中的答案匹配,数组中的相同索引,第一个问题有第一个答案,等等。

我可以用 if...else 和 || 来做和 && 运算符,但对于超过 5 个条目,代码变得太长且难以维护。

 <p> The question of the moment...</p>
<p id="demo"></p>

<button onclick="refreshMe()">Next one&nbsp;</button><br><br>
<input name="answer" type="text" placeholder="Your answer is....." id="answer">
<br><br>
<button onclick="userAnswer()">Check answer</button>
<p id="userA"></p>

最佳答案

现在您有两个列表。一个包含问题,另一个包含答案:

var questions = [ "2 + 2", "2 + 1", "1 + 1" ];
var answers = [ "4", "3", "2" ];

为了轻松检查您的用户输入,最好将此数据结构转换为一个对象,其中问题是,答案是.

请注意,这要求您的问题和答案组合是唯一的。即:一个问题不能有多个答案

var questionsWithAnswers = {
"2 + 2": "4",
// etc.
}

您可以在 javascript 中转换数据,因此您不必重写列表:

var questionsWithAnswers = {};
for (let i = 0; i < questions.length; i += 1) {
questionsWithAnswers[question[i]] = answers[i];
}

现在,你的问题检查是:

var answerIsCorrect = questionsWithAnswers[question] === userInput;

关于javascript - 在javascript中匹配来自两个数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49552658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com