JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列を特定の回数だけ繰り返す方法

JavaScriptでは、文字列と数値を引数として受け取り、その文字列を指定された回数だけ繰り返した新しい文字列を返す関数を書くことが求められるケースがあります。本記事では、その実装方法をわかりやすく解説します。

問題の概要

ここで必要なのは、次のような仕様を持つJavaScript関数です。

  • 第1引数に文字列、第2引数に繰り返し回数(数値)を受け取る
  • 入力文字列を第2引数で指定された回数だけ繰り返す
  • 繰り返した結果の新しい文字列を返す

実装例

以下は、ループ処理を使って文字列を繰り返すコード例です。

const str = 'this';
const num = 8;

const repeatSpecificTimes = (str = '', num = 1) => {
    const arr = [str];
    let i = 1;
    while (i < num) {
        arr.push(arr[0]);
        i++;
    }
    return arr.join('');
};

console.log(repeatSpecificTimes(str, num));

出力結果

thisthisthisthisthisthisthisthis

コードの解説

この関数の動作を順を追って見ていきましょう。

  1. まず、初期値として元の文字列を格納した配列 arr を作成します。
  2. 変数 i をカウンターとして使い、num 回に達するまで while ループで同じ文字列を配列に追加していきます。
  3. 最後に join('') を使って配列の要素をすべて連結し、1つの文字列として返します。

デフォルト引数として空文字と1を設定しているため、引数が省略された場合でもエラーにならず安全に動作する点がポイントです。

よりシンプルな代替手段:String.prototype.repeat()

実際の開発では、ES6で導入された標準メソッド String.prototype.repeat() を使うのが最も簡単で効率的です。

const str = 'this';
const num = 8;

console.log(str.repeat(num));
// 出力: thisthisthisthisthisthisthisthis

repeat() メソッドは負の数が渡されるとエラーをスローし、0が渡されると空文字を返すため、意図しない挙動も防げます。特別な理由がない限り、こちらの組み込みメソッドを使用することをおすすめします。

まとめ

文字列を指定回数だけ繰り返す処理は、ループと配列を組み合わせて自前で実装することもできますが、String.prototype.repeat() を使えば1行で簡潔に記述できます。学習目的で自作する場合も、実際のコードでは標準メソッドを活用すると可読性とパフォーマンスの両面でメリットがあります。

  1. JavaScriptで文字列内のアルファベットだけを反転する方法

    問題の概要JavaScriptで、アルファベットといくつかの特殊文字(記号)が混在する文字列 str を受け取る関数を作成することを求められています。この関数は、入力文字列をもとに新しい文字列を返します。その際のルールは次のとおりです。アルファベット以外の文字(記号・数字など)は、元の位置にそのまま留まります。アルファベットの文字だけが、互いに反転した位置へ移動します。入力例と出力例たとえば、関数への入力が以下だった場合を考えてみましょう。入力const str = k_lmn_opq;出力const output = q_pon_mlk;「_」という記号は位置が変わっておらず、アルファベット

  2. JavaScriptで配列内の特定の数値に最も近い2つの要素を検索する方法

    問題の概要JavaScriptで、ソート済みの整数配列 arr を第一引数に、目標となる数値 target を第二引数に受け取る関数を作成します。この関数は、配列内に存在する要素の中から target に最も近い2つの数値を選び、それらを昇順に並べた配列として返す必要があります。例えば、以下のような入力が与えられた場合を考えてみましょう。入力:const arr = [1, 2, 3, 4, 5];const target = 3;出力:const output = [2, 3];この場合、target の値が 3 であるため、最も近い2つの要素は 2 と 3 となり、昇順に並べて [2, 3