Javascript 是否将If/Else条件转换为for循环?

Javascript 是否将If/Else条件转换为for循环?,javascript,jquery,for-loop,onclick,Javascript,Jquery,For Loop,Onclick,新开发人员目前正在学习课程,正在使用Javascript和Jquery进行一个琐碎的游戏项目。我有一个很长的if-else条件,看看是否可以放入for循环来压缩代码。或者是否有其他方法来缩短它?这场比赛我一共有8个问题 if (question1 == "Red Hot Chili Peppers") { userCorrect ++; }else { userIncorrect ++; } if (question2 == "Rag

新开发人员目前正在学习课程,正在使用Javascript和Jquery进行一个琐碎的游戏项目。我有一个很长的if-else条件,看看是否可以放入for循环来压缩代码。或者是否有其他方法来缩短它?这场比赛我一共有8个问题

if (question1 == "Red Hot Chili Peppers") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question2 == "Rage Against The Machine") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question3 == "Nirvana") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question4 == "Sublime") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question5 == "The Black Keys") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question6 == "Dave Grohl") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question7 == "Pearl Jam") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

    if (question8 == "Big Gigantic") {
        userCorrect ++;

    }else {
        userIncorrect ++;

    }

}

游戏有效;但是,如果可能的话,请将其浓缩。

使用一系列正确答案(和一系列问题)代替:

如果您熟悉
reduce
,则可以不必进行
长度检查。最后,
reduce
更适合将数组转换为单个表达式:

const userCorrect = correctAnswers
  .reduce((a, correctAnswer, i) => a + userAnswers[i] === correctAnswer, 0)

将正确答案存储在一个数组中,将用户的猜测存储在另一个数组中。然后,循环正确答案,并对照用户猜测数组中相应的答案进行检查

这可以通过几种不同的方式实现,但由于您只是在学习,所以我将它保持得非常简单。它依赖于循环使用的第一个数组,然后使用a来决定是否应该增加分数

const correctAnswers=[
“红辣椒”,
“对机器的愤怒”,
“涅盘”
];
让用户回答=[
“红辣椒”,
“绿色日”,
“涅盘”
];
设numberCorrect=0;
//在正确的答案上循环
forEach(函数(答案、索引){
//如果用户的答案与正确答案匹配,则增加分数。
numberCorrect=用户答案[索引]==答案?numberCorrect+1:numberCorrect;
});

log(“你得到了”+correctAnswers.length+“correct.”中的“+numberCorrect+”)
如果您将正确的
答案
保存在一个数组中,而用户的
响应
保存在另一个数组中,其中数组索引将答案与响应匹配,则可以使用循环来比较答案并计算正确的答案

const answers=[
“红辣椒”,
“对机器的愤怒”,
“涅盘”,
“崇高”,
“黑钥匙”,
“戴夫·格罗尔”,
“珍珠酱”,
“大巨人”
];
让用户响应=[
“红辣椒”,
“粉红弗洛伊德”,
“涅盘”,
“崇高”,
“黑钥匙”,
“鲍勃·马利”,
“珍珠酱”,
“北极猴”
];
设商品=0;
userResponses.forEach((x,idx)=>
{
商品+=(x==答案[idx]);
});
控制台日志(“更正:+货物”);

console.log(“不正确:”+(answers.length-good))从创建正确答案数组开始。然后,将用户的所有答案存储在不同的数组中。将
correctCount
计数器初始化为0,并使用简单的
for循环
在列表中循环,比较每个值。此外,由于
increctcount
很容易计算,因此不必单独计算

const correctAnswers = [
  "Red Hot Chili Peppers",
  "Rage Against The Machine",
  "Nirvana",
  "Sublime"
];

const userAnswers = [
  "Red Hot Chili Peppers",
  "Rage Against The Machine",
  "Nirvana",
  "Metallica"
];

let correctCount = 0;

for (let i = 0; i < correctAnswers.length; i++) {
  if (correctAnswers[i] === userAnswers[i]) {
    correctCount++;
  }
}

console.log("Correct answers:" + correctCount);
console.log("Incorrect answers:" + (correctAnswers.length - correctCount));

const correctAnswers=[
“红辣椒”,
“对机器的愤怒”,
“涅盘”,
“崇高”
];
const userAnswers=[
“红辣椒”,
“对机器的愤怒”,
“涅盘”,
“金属”
];
让correctCount=0;
for(设i=0;i
将您的问题放入一个数组或其他集合中,并使用循环。这与我的答案有何不同?它不是,是相似的,但我没有看到您的答案,因为我正在制作我的答案。只有一个答案,当我开始我的。如果这是你的问题,我可以删除这个。我应该训练我的手指打字更快。。。
const correctAnswers = [
  "Red Hot Chili Peppers",
  "Rage Against The Machine",
  "Nirvana",
  "Sublime"
];

const userAnswers = [
  "Red Hot Chili Peppers",
  "Rage Against The Machine",
  "Nirvana",
  "Metallica"
];

let correctCount = 0;

for (let i = 0; i < correctAnswers.length; i++) {
  if (correctAnswers[i] === userAnswers[i]) {
    correctCount++;
  }
}

console.log("Correct answers:" + correctCount);
console.log("Incorrect answers:" + (correctAnswers.length - correctCount));