如何使用Javascript同时测试两个条件下的数字?

如何使用Javascript同时测试两个条件下的数字?,javascript,loops,if-statement,Javascript,Loops,If Statement,我在同时针对两个条件进行循环测试时遇到问题 for (var result = 0; result <= 100; result ++) if (result % 3 == 0) console.log ('Fizz'); else if (result % 5 == 0) console.log ('Buzz'); else console.log (result); 这是我的解决方案,而“FizzBuzz”根本没有让它成为控制台!为什么这个解决方案不起作

我在同时针对两个条件进行循环测试时遇到问题

for (var result = 0; result <= 100; result ++)
  if (result % 3 == 0)
    console.log ('Fizz');
  else if (result % 5 == 0)
    console.log ('Buzz');
   else console.log (result);
这是我的解决方案,而“FizzBuzz”根本没有让它成为控制台!为什么这个解决方案不起作用?

顺序很重要

if (result % 5 == 0 && result % 3 == 0)
  console.log ('FizzBuzz');
else if (result % 3 == 0)
  console.log ('Fizz');
else if (result % 5 == 0)
  console.log ('Buzz');
else console.log (result);
当结果同时为3的倍数和5的倍数时,以下两项均成立:

结果是3的倍数 结果是5的倍数 因此,如果您在else部分中检查结果%5==0&&result%3==0,它将永远不会为真

您也可以考虑嵌套条件句:

if (result % 3 == 0)
  if (result % 5 == 0)
    console.log ('FizzBuzz');
  else
    console.log ('Fizz');
else if (result % 5 == 0)
  console.log ('Buzz');
else console.log (result);

您的最后一个代码片段丢失了一点,但我认为这是因为您正在else-if块中测试AND语句

你是说

if result is a multiple of 3 print fizz
otherwise (not a multiple of 3), if result is a multiple of 5 print buzz
otherwise (not a multiple of 3 nor 5), if result is a multiple of 3 and 5 print fizzbuzz
显然,结果永远不会是第3部分中的所有条件,因为它不可能是

NOT 3x 
NOR 5y 
AND 3x 
AND 5y 

同时,你的想法是正确的,但顺序是错误的。 由于单一声明:

if(result % x == 0)
将在组合的if语句之前返回,因此条件永远不会返回那么远。这对我很有用:

for(var result=0; result <=15; result++) 
  if(result % 5 == 0 && result % 3 ==0) 
      console.log('FizBuzz');
    else if(result % 3 == 0)
      console.log('Fizz')
  else if(result % 5 == 0)
    console.log('Buzz');
  else
    console.log(result)

这是任务的关键-您不需要针对i%3==0和&i%5==0进行测试

功能嘶嘶声测试{ 严格使用;
对于let i=1;我哦,Ow Oriol,你绝对是规则,这立刻解决了我的问题!@IslamIbakaev你怎么知道它是两者的倍数呢?一个轻微的语义点对不起!:在else部分检查结果%5==0&&result%3==0并不意味着它不是真的,只是条件永远不会达到,所以永远不会checked,因为前面的两个条件都是真的。我真的很抱歉,这真的是一个小点…@DavidThomas当结果不是3或5的倍数时,就会达到这个条件,而且总是假的。当然,如果结果是3和5的倍数,这个条件就是真的,但在这种情况下,它不会达到,是的。你们这些家伙在给减号之前,最好检查一下它是如何工作的如果你想让我们检查一下它是如何工作的,在你的答案中加入一个片段,这样我们就可以看到它是如何工作的。但是为什么在检查之前给减号呢?因为直觉上感觉它是错的?我不知道,我也没有投过任何一种票,但我可以看到它确实工作,即使它的书写方式与我的想法不同self,但这只是个人偏好。这是一项你在代码面试中可能遇到的任务。棘手的部分是,你不能对照3和5进行检查。这项任务并不像你们期望的那样简单。你不需要对照结果%5==0&&result%3==0进行检查。实际上,你不能这样做!这是一项棘手的任务,sol这项任务不是简单地将fizzbuzz内容放入控制台,而是在javascript中应用组合概念,但并不是组合对象,而是组合if语句来构建更复杂的语句。
for(var result=0; result <=15; result++) 
  if(result % 5 == 0 && result % 3 ==0) 
      console.log('FizBuzz');
    else if(result % 3 == 0)
      console.log('Fizz')
  else if(result % 5 == 0)
    console.log('Buzz');
  else
    console.log(result)