2017-11-20 6 views
0

問題が残っています...入力番号が与えられています長さ4の文字列を出力しようとしています。 2つのパラメーターセクション "On"/"Off"。例えば複数の配列(javascript)を作成するために長いfor-loopsを避ける方法

:入力番号-If

は次のように文字列を組み合わせ取得する必要があり、16:

  • = * Math.floor "オン" の "オン"(16/5 )= 3 - > "オンオン"。
  • "オフ"セクションは、length-On-section = 4-3 = 1 - > "オフ"にする必要があります。
  • したがって、文字列は "On On On Off"のようになります。

私は現在、forループを使用するよりも、私のソリューションをより良いアプローチに絞りたいと考えています。私は、このアプローチをさまざまな時間に繰り返して、同じアプローチで、さまざまな長さと "オン"/"オフ"のセクション比率でストリングを作成する必要があります。しかし - 私適切にそれを設定する方法がわからない...

が、これは一例です:


function hoursTop(hour) { 
var lights = [], on = Math.floor(hour/5), off = 4 - topLightsOn; 

for(var i=1; i<=on; i++){ 
lights.push('On'); 
} 
for(var j=1; j<=Off; j++){ 
lights.push('Off'); 
} 
return lights.join(""); 
} 

これは...全体的に私を助けてくれてありがとうをあまりにも多くのコードを生成します! 、そしてそれらCONCAT、配列を作成する

function hoursTop(hour) { 
 
    var on = Math.floor(hour/5), off = 4 - on; 
 
    
 
    return 'on '.repeat(on) + 'off '.repeat(off).trim(); 
 
} 
 

 
console.log(hoursTop(16));

それとも、Array#fillを使用することができます。

答えて

0

あなたは、それらCONCAT、文字列を作成するためにString#repeatを使用して、余分なスペースをトリミングすることができます配列を文字列に結合します。

function hoursTop(hour) { 
 
    var on = Math.floor(hour/5), off = 4 - on; 
 
    
 
    return Array(on).fill('on').concat(Array(off).fill('off')).join(' '); 
 
} 
 

 
console.log(hoursTop(16));

関連する問題