首页 > 解决方案 > JS:Fizz Buzz Sequence Quiz(将系列中的最后一个元素显示为整数,以防它等于 Fizz、Buzz 或 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;
    }

标签: javascriptfizzbuzz

解决方案


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; 
}

推荐阅读