我正在尝试解决着名的FizzBuzz测验,但我决定使用逻辑运算符或代替其他来提供后卫。
for (var num = 1; num <= 100; num++) {
var output;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output || num);
}
这应该打印从1到100的所有数字,但有一些例外。对于可被3整除的数字,打印“Fizz”而不是数字,对于可被5整除的数字,打印“Buzz”而不是“FizzBuzz”,对于可被3和5整除的数字。
但它不会打印任何数字。
我会说Zakaria的回答是正确的,但为了曝光,这是我的答案
for (var i = 1; i <= 100; i++) {
var output = "";
if (!(i % 3)) output += "Fizz";
if (!(i % 5)) output += "Buzz";
console.log(output || i);
}
我的逻辑:将输出值设置为等于""
,其值为falsey值。
如果一个数字可被3整除,则i % 3
将为0,这也是一个假值,因此我们使用!
运算符将其翻转。假设i=9
,然后! (i%3)
= !(9%3)
= !(0)
= !(false)
= true
。
因此,如果!(i%3)
变为true,我们用“Fizz”附加我们的空字符串,那么我们对i%5
使用相同的逻辑,而是附加“Buzz”
请注意这两个if语句的顺序很重要 - 翻转它们,你会得到BuzzFizz而不是FizzBuzz。
如果输出不是我们将其设置为原始的空字符串,output || i
将返回output
的值,给我们“Fizz”,“Buzz”或“FizzBuzz”取决于。
如果输出为空,那么output || i
将返回i
的值
希望这有助于进一步理解Javascript!
output
声明可能是num
像:
var output = num;
因此,您不必使用||
操作符,只需直接打印output
:
console.log(output);
for (var num = 1; num <= 100; num++) {
var output = num;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output);
}
使用let
来修复output
的范围:
for (var num = 1; num <= 100; num++) {
let output;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output || num);
}
此外,如果你用||
初始化output
,可以删除num
:
for (var num = 1; num <= 100; num++) {
let output = num;
if (num % 5 === 0 && num % 3 === 0) {
output = "FizzBuzz";
} else if (num % 5 === 0) {
output = "Buzz";
} else if (num % 3 === 0) {
output = "Fizz";
}
console.log(output);
}