具有不同类型的逻辑运算符

问题描述 投票:2回答:3

我正在尝试解决着名的FizzBu​​zz测验,但我决定使用逻辑运算符或代替其他来提供后卫。

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”而不是“FizzBu​​zz”,对于可被3和5整除的数字。

但它不会打印任何数字。

javascript loops logical-operators console.log
3个回答
2
投票

我会说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而不是FizzBu​​zz。

如果输出不是我们将其设置为原始的空字符串,output || i将返回output的值,给我们“Fizz”,“Buzz”或“FizzBu​​zz”取决于。

如果输出为空,那么output || i将返回i的值

希望这有助于进一步理解Javascript!


3
投票

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);
}

1
投票

使用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);
}
© www.soinside.com 2019 - 2024. All rights reserved.