我正在尝试执行一个将在console.log中打印1-27之间的数字的功能。

当数字可以除以3时,应将其替换为“ Fizz”
如果数字可以除以5,则将其替换为“嗡嗡声”。
如果该数字可以同时除以3和5,则将其替换为“ Fizzbuzz”

参考:http://en.wikipedia.org/wiki/Fizz_buzz

这是我的代码:

 var fizzbuzz = function(start,stop) {
    for (var x=1;x <= stop; x++)
        var string =',';
    if (x%3 == 0) {
            string += 'Fizz';
    }
    if (x%5 ==  0){
        string += 'Buzz';
    }
    if (x%5 && x%3){
        string += 'Fizzbuzz';
    }
    return string;
};


Console.log给我“,”,但我不确定自己做错了什么。

只是为了澄清。
我希望我的答案打印出1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,Fizz Buzz,16,17,Fizz,19,Buzz,Fizz,22,23,Fizz,Buzz,26,Fizz,依此类推,取决于If语句中的“停止”。

最佳答案

Valentins的评论是正确的,您确实需要在循环中添加方括号。
但是,您还需要在循环的每次迭代中重新定义字符串var。

最后一个if也使输出有点错误,例如15将命中所有3条语句并打印FizzBu​​zzFizzBu​​zz

所以去像

var fizzbuzz = function(start,stop) {
  var string = '';
  var addComma = false;
  for (var x=1;x <= stop; x++){
    addComma = false;
    if (x%3 == 0) {
        string += 'Fizz';
        addComma = true;
    }
    if (x%5 ==  0){
        string += 'Buzz';
        addComma = true;
    }
    if(addComma && x!== stop){
        string+=','
    }
  }
  return string;
};


这不是跟踪逗号添加位置的最佳方法,但它确实可以完成。

关于javascript - 带循环的Fizzbuzz游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28344007/

10-10 21:44