尝试编写一个fizzBuzz测验,使用chrome JavaScript控制台为数组中的任何数字生成单词"fizz"
,并为可被5整除的数字生成单词"Buzz"
,最后为可被5和3整除的数字生成单词"fizzBuzz"
。
这段代码只是打印数字,而不替换为单词fizz和Buzz。
我希望继续在控制台中输入函数fizzBuzz()
,以便继续生成其他数字,我的问题是,为什么不起作用?
我期望的结果如下:
[1,2,"Buzz",4,"Fizz","Buzz",7,8,"Buzz","Fizz",11,"Buzz",13,14,"FizzBuzz"]
但我得到的却是:
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
这是我的当前代码:
var output=[];
var previous = 1;
function fizzBuzz(){
if (output[(previous-1)]%5===0 && output[(previous-1)]%3===0){
output.push(("FizzBuzz"));
console.log(output);
previous++;
}
else if (output[(previous-1)]%5===0){
output.push("Fizz");
console.log(output);
previous++;
}
else if (output[(previous-1)]%3===0){
output.push("Buzz");
console.log(output);
previous++;
}
else {
output.push(previous);
console.log(output);
previous++;
}
}
4条答案
按热度按时间jdzmm42g1#
所以在检查了你的建议后,我改变了我的算法,这个算法有效,
vcudknz32#
不声明其他变量而获得相同结果的一种更简单的方法是改变原始数组。
6ss1mwsb3#
使用生成器函数而不是保留全局变量怎么样!例如
或者一个行为类似于生成器的闭包
r9f1avp54#
你可以看看这个:D