2011-02-10 6 views
1

これを説明する最良の方法は例です。 数値をJavaScriptの文字で埋め尽くされた文字列に変換する

のは、私は機能に差し込み整数5を持っていると言う、それは         「『のように、単一の変数に5回(』)」空白文字を返しますしてみましょう。

私はそれを関数に接続し、出力は "     "(3スペース)になります。

うまくいきましょう。これを達成する最良の方法は何ですか? JavaScriptを使って、ループの有無にかかわらず、これが本当に簡単な方法であると私は思います。ありがとう。逆の詳細については

+1

これは、http://stackoverflow.com/questions/1877475/repeat-character-n-timesで回答されているようです。 –

+0

@drachenstern任意の文字列から空白に移動することは大きな飛躍ではありません。 –

+0

@drachenstern:私はあなたを見た後でそれを編集して、ただ一つの文字だけの新しいリンクにしました。 @Jeremiah、あなたはしました。 –

答えて

2
function spaces(size) { 
    for(var output = ""; size > 0; size--) output += " "; 
    return output; 
} 

短いバージョンを:)

function spaces(n) { 
    for(var s="";n--;s+=" "){}return s; 
} 
+0

これはかなりトリッキーです。私はそれが好きです。しかし、アウトプットはループの外で範囲外になることはありませんか? – jcolebrand

+0

いいえ、 'var'はローカルスコープで出力を保持します(' function spaces')。どうやら、 'var'の代わりに' let'を使うとブロックスコープ内にそれを保持しているようです。 – Hamish

+0

ニース。私はそれを知らなかった。私はあなたがそれが範囲外になることを期待するべきです。私はそのことを覚えておく必要があります。ありがとう。 – jcolebrand

4
function nSpaces(n) { 
    var s = ''; 
    while (n > 0 && n--) { s += ' '; } 
    return s; 
} 

そして...

var str = nSpaces(5); 

ループと一般的には、whileループ、ここで読む: http://james.padolsey.com/javascript/looping-in-javascript/

+0

@drachenstern私はそれをトリックと呼んでいません。これは単なるループの方法です。 –

+0

これは非常に一般的なパラダイムです。リスクは 'n'が0より小さい場合です。 – Hamish

+0

@Hamishああ、否定的な引数は無限ループを作ります(私のChromeはLOLの方法でクラッシュします)。私はそれを修正します。 –

1

これはもっと速い方法ですが、他の手続き型言語と同じです。これをページに直接挿入すると、1つのスペースとして表示されます。

function gimmeSpaces(count){ 
    var returnValue = ''; 
    for (int i = 0;i<count;i++){ returnvalue += " ";} 
    return returnValue; 
} 
1

または配列バージョンは常にあります:

function spaces(n) { 
    var a = [ ]; 
    for(var i = 0; i < n; ++i) 
     a.push(' '); 
    return a.join(''); 
} 

基本的な考え方は、nスペース(a.push(' '))のリストを作成してから終了(a.join(''))で、一度にすべてを一緒に固執することです。

一部のIEバージョンではAFAIK、文字列連結(例:s += ' ')が遅く、配列の方が高速です。 OTOH、それは本当にこのケースで大きな違いを生むべきではないので、どのようなアプローチでも明確にする必要があります。ここで

+0

括弧内のリンクと説明は、 "私はあなたが勝つことを願って";) – jcolebrand

+0

UnooungHeroであまりにもうれしい!おめでとう。 – jcolebrand

+0

私はお試しください。ありがとう;) – jcolebrand

3
function repeatCh(ch, num) {  
    return new Array(num + 1).join(ch); 
} 
+0

chが複数の文字であれば動作しますか? – jcolebrand

+0

@drachensternはい。 –

+0

私はこれが一番好きです+1 –

1

はループを含まない方法です:

function getSpaces(n) { 
    return new Array(n + 1).join(" "); 
} 

オルタナティブ、楽観バージョン(スピードが重要であり、あなたが必要となるスペースの最大数がわかっている場合):

function getSpaces(n) { 
    return "     ".substr(-n); 
} 
関連する問題