組み込みメソッドを使わずに文字列を反転するJavaScript関数
今回は、文字列を受け取って、その文字列を反転させた新しい文字列を返すJavaScript関数を作成します。
ただし、以下の条件が課せられています。
- 組み込みのStringメソッド(
reverse()など)を使用してはいけない - 文字列を
split()などで配列に変換してから反転する方法も使えない
つまり、ループを使って文字列を1文字ずつ走査しながら、反転された新しい文字列を自力で構築する必要があります。
実装の考え方
基本的なアプローチはシンプルです。文字列の先頭から順に1文字ずつ取り出し、その文字を「結果となる文字列の先頭」に追加していきます。こうすることで、後から処理した文字ほど前に来るため、自然と文字列が反転されます。
コード例
const str = 'Hello World';
const reverse = (str = '') => {
const { length } = str;
let res = '';
for(let i = 0; i < length; i++){
const el = str[i];
res = el + res;
};
return res;
};
console.log(reverse(str))出力結果
上記のコードを実行すると、次の出力が得られます。
dlroW olleH
処理の流れを詳しく見る
この関数では、まずstr.lengthを分割代入で取得し、ループの回数として利用しています。ループ内では、インデックスiを使って現在の文字を1文字ずつ取り出し、res = el + res;によって既存の結果文字列の先頭に連結しています。
例えば「Hello」の場合、処理は以下のように進みます。
- 1周目:
''+'H'→'H' - 2周目:
'H'+'e'→'eH' - 3周目:
'eH'+'l'→'leH' - 4周目:
'leH'+'l'→'lleH' - 5周目:
'lleH'+'o'→'olleH'
このようにして、組み込みメソッドに頼らずとも文字列を反転させることができます。
-
JavaScriptの関数プロトタイプとは?仕組みと使い方を解説
JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに
-
JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説
JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン