通过一些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)
}
答案 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);