JavaScript中的FizzBu​​zz示例

时间:2014-06-19 16:58:10

标签: javascript fizzbuzz

通过一些JS示例,我为fizzbuzz问题编写了这个解决方案。它只打印1..20而str永远不会得到concat()值。 有人可以解释为什么这不起作用吗?

for(i=1; i<=20; i++){
    var str = ''
    if(i%3===0){     
        str.concat('Fizz')
    }
    if(i%5===0){
        str.concat('Buzz')
    }
    if(str===''){
        console.log(i)
    } else {
        console.log(str)
    }
}

更新:由于上述问题是一个简单的语法错误(不想启动新线程),想知道以下是否是在JS 中简洁地编写上述答案的好方法?

for(i=1; i<=20; i++){
    var str = ''
    i%3===0 ? str = str.concat('Fizz') : false
    i%5===0 ? str = str.concat('Buzz') : false
    str==='' ?  console.log(i) : console.log(str)
}

3 个答案:

答案 0 :(得分:2)

因为String.prototype.concat()返回了连续字符串。

您需要str = str.concat("XYZ");

答案 1 :(得分:0)

str.concat返回新字符串。它不会修改原始的。尝试

str = str.concat('Fizz');

答案 2 :(得分:0)

更合适的解决方案

const fizzbuzz = num => {
  let str; 
  for(let i=1; i<=num; i++) {
    str = "";
    if(i%3===0) {
      str = "fizz";
    }
    if(i%5===0) {
      str += "buzz";
    }
    console.log(str || i);
  }
}

fizzbuzz(100);