例えば、文字列 "abc" があったとして、これを3回繰り返す "abcabcabc" という文字列をつくりたいとき、新しめのブラウザでは repeat() という関数が利用できます。
var orig = "abc";
var str = orig.repeat( 3 );
// str = "abcabcabc"
var str = orig.repeat( 3 );
// str = "abcabcabc"
まあ便利。
ただし Internet Explorer では repeat() が未実装なので、これと同じ働きをする関数を定義しておいてあげましょう。
if (!String.prototype.repeat) { /* String.repeat が定義されていなければ… */
String.prototype.repeat = function(count) {/* …定義する。 */
return Array(count*1+1).join(this);
};
}
String.prototype.repeat = function(count) {/* …定義する。 */
return Array(count*1+1).join(this);
};
}
ほんとは String ( = this )が null の場合だとか、引数 count が数値(あるいは数値と認識できる文字列)で無い場合に対処するためのエラー処理を組み込んだほうが良いのだけれど、個人で使うぶんにはこれでよかろう。
関数内で何をやっているかというと、
- 繰り返しの数 + 1 の長さの配列を生成して(配列の中身は [ undefined, undefined, undefined , ... ] になりますね)、
- この配列の要素を、繰り返したい文字列を挟んで連結( join() )する。
…と、なんともシンプルでスマートな操作です。
→ Repeat Character N times | StackOverflow
賢いことを思いつく人が居るもんですなぁ。
コメント