JS - 附加记录的数字序列

时间:2017-06-23 20:49:44

标签: javascript string append sequence

我已经制作了一个从0到20的数字序列,我想改变序列,所以一旦它出现3和5的倍数,它将'FizzBu​​zz'记录到终端然后继续其余的最多20个数字。我的问题是,一旦我将数字更改为字符串,序列中的其余条款就会出现NaN。我知道我的代码的问题是我正在将数字更改为字符串,并且您无法对字符串执行添加,这就是NaN出现的原因。我对此非常陌生,所以任何有关如何完成此操作的想法都将非常感激。我尝试过使用.append(),但我很确定我使用的不正确。

到目前为止我的代码;

    var increment = function(number)
    {
        for (var i = 1; i <= 20; i++)
        {
            console.log(number++)
            if ((number % 3 === 0) && (number % 5 === 0))
            {
                number = "FizzBuzz"
                console.log("FizzBuzz");
            }
            else if (number % 3 === 0)
            {
                console.log("Fizz");
            }
            else if (number % 5 === 0)
            {
                console.log("Buzz");
            }
            else
            {}
        }
    }
    increment(1)

2 个答案:

答案 0 :(得分:2)

当您找到3和5的倍数时,您将number设置为"FizzBuzz",其中没有++运算符。在下一次迭代中,您在++上调用number,现在为"FizzBuzz",因此会记录NaN

如果你没有将number设置为"FizzBuzz",它应该可以正常工作。

答案 1 :(得分:0)

这样做

var increment = function()
{
    for (var i = 1; i <= 20; i++)
    {
        if ((i % 3 === 0) && (i % 5 === 0))
        {
            console.log("FizzBuzz");
        }
        else if (i % 3 === 0)
        {
            console.log("Fizz");
        }
        else if (i % 5 === 0)
        {
            console.log("Buzz");
        }
        else{
            console.log(i)
        }
    }
}
increment()

无需传递number参数,因为您的for循环已设置为递增1(i++)。