JavaScriptで文字列の各文字をn回繰り返す方法
本記事では、文字列と数値 n を引数として受け取り、元の文字列に含まれるすべての文字をそれぞれ n 回繰り返した新しい文字列を返す JavaScript 関数の作成方法を解説します。
要件の確認
たとえば、次のような文字列が与えられたとします。
const str = 'how are you'
ここで繰り返し回数 n が 2 の場合、期待される出力は次のとおりです。
出力
const output = 'hhooww aarree yyoouu'
ポイントは、空白などの記号も1文字として扱い、すべての文字を均等に繰り返すことです。
実装コード
それでは、この関数のコードを見ていきましょう。ここでは ES6 のアロー関数と String.prototype.repeat() メソッドを組み合わせることで、簡潔に実装できます。
const str = 'how are you';
const repeatNTimes = (str, n) => {
let res = '';
for(let i = 0; i < str.length; i++){
// String.prototype.repeat() を使用
res += str[i].repeat(n);
};
return res;
};
console.log(repeatNTimes(str, 2));
実行結果
上記のコードを実行すると、コンソールには次のように出力されます。
hhooww aarree yyoouu
コードの解説
String.prototype.repeat() は、対象の文字列を指定した回数だけ繰り返した新しい文字列を返すメソッドです。ループで元の文字列を1文字ずつ取り出し、それぞれに対して repeat(n) を適用して連結することで、目的の結果を得られます。
なお、n が 0 の場合は空文字列が返され、負の値を渡すと RangeError がスローされるため、実際のアプリケーションで使う際は入力値のバリデーションを行うことをおすすめします。
-
JavaScriptで文字列の重みを計算する方法
アルファベット1文字の「重み」とは?英語のアルファベットにおける「重み」とは、その文字がアルファベットの中で何番目に位置するかを示す、1から始まるインデックスのことです。たとえば、「c」は3番目なので重みは3、「k」は11番目なので重みは11となります。この記事では、小文字の文字列を受け取り、その文字列全体の重みを計算して返すJavaScript関数を作成します。実装例実際のコードは以下のとおりです。const str = this is a string; { str = str.toLowerCase(); &
-
JavaScriptで不正な時間文字列(HH:MM:SS)を正規化して修正する方法
JavaScriptでは、「HH:MM:SS」形式の時間文字列を扱う場面がよくあります。しかし、時間の加算処理などで計算ミスが発生すると、分や秒が60を超えてしまう「壊れた」時間文字列が生成されることがあります。この記事では、そうした不正な時間文字列を正しく正規化する方法を解説します。 課題:壊れた時間文字列とは 今回求められるのは、JavaScriptで「HH:MM:SS」形式の時間文字列を受け取り、必要な修正を加えた上で、正しい時間文字列として返す関数を作成することです。 問題になるのは、加算処理のバグによって、次のような不正な値が含まれてしまうケースです。 MM(分)の部分が60を超え