我已经制作了一个从0到20的数字序列,我想改变序列,所以一旦它出现3和5的倍数,它将'FizzBuzz'记录到终端然后继续其余的最多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)
答案 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++
)。