JS: Fizz Buzz Sequence Quiz(将系列中的最后一个元素显示为整数,以防它等于 Fizz、Buzz 或 Fizz Buzz)

JS: Fizz Buzz Sequence Quiz (Display last element in series as Integer in case it equals to Fizz, Buzz or Fizz Buzz)

我正在创建一个基于 Fizz Buzz 序列的测验,用户需要猜测该序列中的最后一个元素。

示例:422,菲兹,424,嗡嗡声,?

可能的答案应该是:

这就是我卡住的地方,如果最后一个元素是 int(不是 Fizz、Buzz、Fizz Buzz),一切都很好,因为可能的答案是正确的。但万一它是一个词,我会用我当前的代码得到一个副本,这使得用户很容易猜到正确的答案。我想要做的是,如果最后一个元素是单词之一,我想改为显示该单词的数字。但我不知道该怎么做。

现在结果是这样的:

示例:422,菲兹,424,嗡嗡声,?

答案:

function() {
            var startNumber = randomNumber(1);
            var range = startNumber + 5;
            var fizzBuzz = fizzBuzzGenerator(startNumber, range);
            var fizzBuzzArray = fizzBuzz.split(",");
            var fizzBuzzLastElement = fizzBuzzArray[fizzBuzzArray.length - 1];

            contentElement.innerHTML = `
            ${fizzBuzzArray[0]}, ${fizzBuzzArray[1]}, ${fizzBuzzArray[2]}, ${fizzBuzzArray[3]}, ?
            <br>
            <input class="checkbox" type="checkbox" name="false" value="Fizz">Fizz<br>
            <input class="checkbox" type="checkbox" name="false" value="Buzz">Buzz<br>
            <input class="checkbox" type="checkbox" name="false" value="Fizz Buzz">Fizz Buzz<br>
            <input class="checkbox" type="checkbox" name="correct" value="${fizzBuzzLastElement}">${fizzBuzzLastElement}<br>
           `;
        },

  // Generates Fizz Buzz sequence
    function fizzBuzzGenerator(start, stop) {
        var fizzBuzzString = "";

        for (let i = start; i < stop; i++) {
            if (i % 3 == 0 && i % 5 == 0) {
                fizzBuzzString += "Fizz Buzz" + ",";
            } else if (i % 3 == 0) {
                fizzBuzzString += "Fizz" + ",";
            } else if (i % 5 == 0) {
                fizzBuzzString += "Buzz" + ",";
            } else {
                fizzBuzzString += i + ",";
            }
        }

        fizzBuzzString = fizzBuzzString.slice(0, -1);
        return fizzBuzzString;
    }

var fizzBuzzLastElement = fizzBuzzArray[fizzBuzzArray.length - 1];

替换为

var fizzBuzzLastElement = fizzBuzzArray[fizzBuzzArray.length - 1];
// if last element is one of fizz/buzz/fizz buzz word then show the number.
// if start is 422, range is 427, then last element will be range - 1
if (fizzBuzzLastElement.includes('zz')) {
    fizzBuzzLastElement = range - 1; 
}

谢谢湿婆。我也想出了这个解决方案,方法是创建一个额外的答案数组并创建一个 lastNumber 变量。

var answers = [];
var lastNumber = startNumber + 4;
   if (typeof fizzBuzzLastElement == "string") {
                answers.push("Fizz", "Buzz", "Fizz Buzz", lastNumber);
            } else {
                answers.push("Fizz", "Buzz", "Fizz Buzz", fizzBuzzLastElement);
            }