2017-06-05 31 views
-3

我試圖打印是被3整除和5 對於整除數3個數字,打印出「嘶嘶聲」。 對於由5整除的數字,打印出「口碑」。 對於由兩個3和5整除數,在 控制檯打印出「FizzBu​​zz」。否則,只需打印出數字即可。如何打印具有相同條件的值 - 的JavaScript

嘗試這些代碼:

var i; 

for(i = 1; i <= 20; i++){ 
    if(i % 3 === 0){ 
    console.log("Fizz"); 
    }else if(i % 5 === 0){ 
    console.log("Buzz"); 
}else if(i % 3 === 0 && i % 5 === 0){ 
     console.log("FizzBuzz"); 
    }else { 
    console.log(i);  
} 
} 

但似乎它傳遞出第三否則,如果... 有沒有更好的方式來做到這一點?

+6

根據[Marijn Haverbeke(http://eloquentjavascript.net/02_program_structure.html),這實際上是一直聲稱淘汰程序員候選人顯著比例的面試問題。所以,如果你沒有解決這個問題,那麼你在採訪中不會對自己的機會感到滿意。 –

+2

@GerardoFurtado,很有趣。 –

回答

3

你可以合併comparsion移動到比較頂部,因爲如果兩個條件均滿足,你不需要檢查等。爲相同的結果

var i; 
 

 
for (i = 1; i <= 20; i++) { 
 
    if (i % 3 === 0 && i % 5 === 0) { // check first, includes 
 
     console.log("FizzBuzz"); 
 
    } else if (i % 3 === 0) {   // this comparison and 
 
     console.log("Fizz"); 
 
    } else if (i % 5 === 0) {   // this as well. 
 
     console.log("Buzz"); 
 
    } else { 
 
     console.log(i); 
 
    } 
 
}

+0

代替'如果(ⅰ%3 === 0 &&則i%5 === 0)'我們不能有'如果(ⅰ%15 === 0)'? –

+0

正確的,但我認爲這個問題是關於比較的順序。 –

1

更少的代碼:

for(var i = 1; i <= 20; i++) { 
 
    var output = ''; 
 
    if(i % 3 === 0) output += 'Fizz'; 
 
    if(i % 5 === 0) output += 'Buzz'; 
 
    console.log(output.length > 0 ? output : i); 
 
}

1

許多由兩個數整除必須通過Least common multiple,在這種情況下是整除15.你也必須移動這個檢查,所以它的缺點在其他陳述之前被理解。

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

for (i = 1; i <= 20; i++) { 
    if (i % 3 === 0 && i % 5 === 0) { 
     document.write("FizzBuzz"); 
    } else if (i % 3 === 0) {   
     document.write("Fizz"); 
    } else if (i % 5 === 0) {  
     document.write("Buzz"); 
    } else { 
     document.write(i); 
    } 
} 
相關問題