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

【JavaScript】負の数の各桁(先頭は負・残りは正)を合計する方法

課題

負の整数を受け取り、その各桁の合計を返すJavaScript関数を作成することを考えます。ここでのポイントは、先頭の桁を負の値として扱い、それ以降の桁は正の値として加算するという点です。

具体的には、次のような計算結果が求められます。

-234 → -2 + 3 + 4 = 5
-54 → -5 + 4 = -1

実装の考え方

この関数は、次の手順で実装できます。

1. 数値を String() で文字列に変換する
2. split("") で1文字ずつ配列に分割する
3. reduce() メソッドで各桁を順番に処理する
4. インデックス0(マイナス記号)はスキップし、インデックス1の最初の数字は減算、それ以降の数字は加算する

サンプルコード

以下が実際のコードです。

const num = -4345;
const sumNum = num => {
   return String(num).split("").reduce((acc, val, ind) => {
      if(ind === 0){
         return acc;
      }
      if(ind === 1){
         acc -= +val;
         return acc;
      };
      acc += +val;
      return acc;
   }, 0);
};
console.log(sumNum(num));

出力結果

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

8

コードの解説

この例では、-4345 の各桁を「-4 + 3 + 4 + 5」として計算しています。最初の「4」だけが負の扱いとなり、残りの「3」「4」「5」は正の値として加算されるため、結果は「8」になります。

なお、初期値を 0 ではなく最初の桁の負の値に設定する方法でも同じ結果が得られます。状況に応じて、よりシンプルな実装に書き換えることも可能です。

  1. JavaScriptで正と負の無限大(Infinity)の値を出力する方法

    JavaScriptで扱える数値には上限があり、その範囲を超えた演算結果は特別な値「Infinity」(正の無限大)または「-Infinity」(負の無限大)として出力されます。この記事では、実際に正と負の無限大の値を画面に出力するサンプルコードを紹介します。 JavaScriptにおける無限大(Infinity)とは JavaScriptの数値型はIEEE 754で定められた倍精度浮動小数点数で、表現できる最大値は Number.MAX_VALUE(約1.79×10308)です。演算結果がこの最大値を超えると、エラーにはならずグローバルプロパティの Infinity が返されます。 正の方

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

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