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

JavaScriptで数値の先頭n桁の合計を求める方法

今回は、2つの数値 mn を引数として受け取るJavaScript関数を作成します。n は常に m の桁数以下であると仮定します。この関数の役割は、m の先頭から n 桁目までの各桁の数字を合計し、その結果を返すことです。

問題の例

たとえば、入力が次のような場合を考えてみましょう。

const m = 5465767;
const n = 4;

このとき、出力は次のようになります。

const output = 20;

理由は簡単で、m の先頭4桁が「5, 4, 6, 5」であり、その合計は 5 + 4 + 6 + 5 = 20 となるためです。

実装コード

それでは、実際のコードを見ていきましょう。

const m = 5465767;
const n = 4;

const digitSumUpto = (m, n) => {
   // nがmの桁数を超えている場合は0を返す
   if(n > String(m).length){
      return 0;
   };
   let sum = 0;
   // 先頭からn桁分をループして加算
   for(let i = 0; i < n; i++){
      const el = +String(m)[i];
      sum += el;
   };
   return sum;
};

console.log(digitSumUpto(m, n));

コードの解説

この関数の処理の流れは以下の通りです。

  • バリデーション: まず、nm の桁数(String(m).length)より大きい場合は無効な入力として 0 を返します。
  • 文字列への変換: 数値 m を文字列化することで、インデックスを使って1桁ずつアクセスできるようにしています。
  • 合計の計算: for ループで先頭から n 桁分を走査し、単項プラス演算子(+)で各文字を数値に変換しながら合計に加算していきます。
  • 結果の返却: ループ完了後、合計値を呼び出し元に返します。

出力結果

コンソールには次のように表示されます。

20

期待どおり、先頭4桁(5, 4, 6, 5)の合計である 20 が出力されました。

まとめ

このように、数値を一度文字列に変換してインデックスで各桁へアクセスする方法を使えば、指定した桁数分の合計をシンプルかつ直感的に計算できます。また、Array.prototype.reduce()slice() を組み合わせれば、さらに簡潔に同じ処理を実装することも可能です。用途に応じて使い分けてみてください。

  1. JavaScriptで数値の各桁の数字を一つずつ分割表示する方法

    はじめに この記事では、ユーザーが入力した数値を検証し、有効な数値であればその各桁の数字を画面に一つずつ表示するJavaScriptプログラムの作り方を解説します。 動作イメージ ページ上のボタンをクリックすると入力ダイアログが開き、そこに数値を入力してOKを押すと、入力された数値の各桁が一行ずつ画面に出力される仕組みです。 例えば、入力が次のような場合—— 43354 画面には次のように表示されます。 4 3 3 5 4 完成コード HTML <!DOCTYPE html> <html>   <head>   &n

  2. 5桁の数値の各桁の合計を求めるC言語プログラム

    5桁の整数 num があるとき、その各桁の合計を求める方法を解説します。基本的な考え方は、数値を右から左へ一桁ずつ取り出しながら足し合わせていくというものです。アルゴリズムの考え方各桁を取り出すには、次の手順を繰り返します。数値を10で割った余りが、現在の一番右の桁(下一桁)になります。数値を10で割った商(整数部分のみ)で数値を更新します。数値が0になるまでこの処理を繰り返します。取り出した桁をすべて合計すれば、それが求める「桁の合計」になります。処理手順num := 58612(対象の数値を設定)sum := 0(合計を格納する変数を初期化)num が0でない間、以下を繰り返す:sum :