JavaScriptで先頭と末尾の桁からなる数との差を求める方法
問題の概要
本記事では、数値を受け取り、その数の先頭(最初)の桁と末尾(最後)の桁だけを使って新しい数を組み立て、元の数とその新しい数との差を返すJavaScript関数の実装方法を解説します。
具体例
例えば、入力が 34567 の場合を見てみましょう。先頭の桁は「3」、末尾の桁は「7」なので、これらから構成される「角の数」は次のようになります。
37
したがって、元の数から角の数を引いた結果として、期待される出力は次の通りです。
34530
コード例
以下が実際の実装コードです。
const num = 34567;
const cornerDifference = num => {
let temp = Math.abs(num);
let corner = temp % 10;
if(temp < 100){
corner = temp;
}else{
while(temp >= 10){
temp = Math.floor(temp / 10);
};
corner = (temp*10) + corner;
};
return num - corner;
};
console.log(cornerDifference(num));実行結果
上記のコードを実行すると、コンソールに次の出力が表示されます。
34530
処理の流れの解説
この関数がどのように動作するのか、ステップごとに確認してみましょう。
- Math.abs(num) を使って絶対値を取得することで、負の数が入力された場合にも対応できます。
- temp % 10 による剰余演算で、末尾の桁(この例では 7)を取り出します。
- 入力が2桁未満の数であれば、その数自体が角の数となります。
- 3桁以上の場合は、while ループ内で10での除算を繰り返し、Math.floor() で小数点以下を切り捨てることで、最終的に先頭の桁(この例では 3)まで到達します。
- (temp * 10) + corner という式で、先頭の桁と末尾の桁をつなげた「37」を組み立てます。
- 最後に、元の数から角の数を減算した値を戻り値として返します。
このアプローチにより、任意の桁数の整数に対して、先頭と末尾の桁のみから構成される数との差を効率的に計算することができます。
-
JavaScriptのNumber()関数とは?使い方とサンプルコードを解説
JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを
-
JavaScriptで数字パターンを表示する方法【初心者向けサンプルコード】
本記事では、テキスト入力欄とボタンを備えたJavaScript・HTMLプログラムの作成方法を解説します。ユーザーが入力欄に任意の数値(例:5)を入力してボタンをクリックすると、画面に以下のような数字パターンが表示される仕組みです。(n = 5 の場合の出力例)01 01 02 01 02 03 01 02 03 04 01 02 03 04 05仕組みのポイントこのパターンは二重ループ(ネストしたforループ)を使うことで実現できます。外側のループが「行」を制御し、内側のループがその行に表示する「数字の個数」を制御します。i 行目には 1 から i までの数字が順番に出力されるため、行が進む