JavaScriptでreverse()メソッドを使わずに数値を反転させる方法
本記事では、数値を受け取り、配列や文字列に変換することなく、桁を逆順に並べ替えた数値を返すJavaScript関数の作成方法を解説します。
実装の考え方
reverse()メソッドや文字列変換に頼らずに数値を反転させるには、再帰処理と剰余演算(%)を組み合わせるのが効果的です。処理の流れは以下の通りです。
num % 10で最下位の桁(1の位)を取り出すres * 10 + 取り出した桁で、結果を桁上げしながら積み上げるMath.floor(num / 10)で最下位の桁を取り除いた残りの数値に対し、再帰的に同じ処理を繰り返す- num が 0 になった時点で、積み上げられた res が反転後の数値となる
コード例
const num = 234567;
const reverseNumber = (num, res = 0) => {
if(num){
return reverseNumber(Math.floor(num / 10), (res*10)+(num % 10));
};
return res;
};
console.log(reverseNumber(num));
console.log(reverseNumber(53536));
console.log(reverseNumber(76576));実行結果
コンソールには以下のように出力されます。
765432 63535 67567
処理の流れを詳しく見る
例として 234567 を反転させる場合を考えてみましょう。最初の呼び出しで 7 が取り出され res は 7 になります。次に 6 が取り出されて res は 76、その後も 765、7654 と桁が積み上げられていき、num が 0 になった時点で 765432 が戻り値として返されます。
このアプローチの計算量は数値の桁数に比例する O(log n) であり、非常に効率的です。また、デフォルト引数 res = 0 を活用することで、呼び出し側は reverseNumber(num) とシンプルに記述できる点も実用的なポイントです。
-
JavaScriptで整数から降順の自然数配列を生成して返す方法
問題JavaScriptで、数値を引数として受け取り、n から 1 までのすべての自然数を含む配列を返す関数を作成する必要があります。入力const num = 6;出力const output = [ 6, 5, 4, 3, 2, 1 ];実装のポイントこの問題を解くには、以下の手順で処理を行います。Math.round() で数値を四捨五入し、整数に丸めます。Math.abs() で絶対値に変換し、負の数が渡されても正しく動作するようにします。for ループを使い、n から 1 まで逆順に値を配列へ追加していきます。コード例以下が実際のコードです。const num = 6; const
-
JavaScriptでArray.prototype.includes()と同等のカスタム関数を自作する方法
JavaScriptでは、Array.prototype.includes()メソッドを使うことで、配列に特定の値が含まれているかどうかを簡単に判定できます。しかし、このメソッドの内部動作を理解するために、同じ機能を持つカスタム関数を自作してみるのは非常に良い学習になります。 課題 JavaScript関数を1つ作成し、それをArray.prototypeオブジェクトに登録します。この関数はリテラル値を1つ引数として受け取り、その値が呼び出し元の配列内に存在する場合はtrue、存在しない場合はfalseを返す必要があります。 実装コード 以下がその実装例です。 const arr = [1,