我正在设计一个测验激励器,即,如果用户输入任意数量的正确答案,他将获得“星号”或“ smth”奖励。下面的伪代码中的数组代表了一系列正确的答案供您选择:



var rightAnswers = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

if (rightAnswers.chooseAny(3)) {user gets a star}
else if (rightAnswers.chooseAny(6)) {user gets 2 stars}
else if (rightAnswers.chooseAny(9) {user gets 3 stars}





除了我的伪“ chooseAny()”,我还没有找到任何可行的方法,请问有什么想法吗?

最佳答案

您可能不是在寻找chooseAny函数;我认为您真正要问的是一种计算一组给定的answersanswerKey正确答案的方法。

下面的getTotalCorrect函数使用for循环和同一性比较为您做到这一点,您可以使用getStars根据返回的分数确定应授予多少颗星星。



var answerKey = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

function getTotalCorrect (answers, answerKey) {
  for (var correct = 0, i = 0; i < answerKey.length; i++) {
    if (answers[i] === answerKey[i]) correct++
  }
  return correct
}

function getStars (totalCorrect) {
   return (totalCorrect / 3) | 0
}

var totalCorrect = getTotalCorrect(['a', 'a', 'c', 'c', 'e', 'e', 'e'], answerKey)
console.log(totalCorrect) //=> 3

var stars = getStars(totalCorrect)
console.log(stars) //=> 1

09-19 01:03