3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

For文を使ったJavaScriptで各桁の和を求める

Posted at

#JavaScriptで各桁の和を求めてみる

Javascript初心者向けの記事です。
調べてもあまりコードが出てこないのと、自分へのメモ書きとして記事にまとめました。

具体的な処理内容
「各桁の和を求める」という処理を例を用いて説明します。

例えば、「12345」という整数があります。
この各桁の和、つまりこの場合は1+2+3+4+5=15を求める処理になります。

12345という整数を入力したとして、15という出力をさせたいわけです。


必要な処理
この処理を行うにあたり、必要な処理をまずは分解してみます。

1.入力した整数を文字列(String型)に変換する
整数型の場合、12345で一つの整数とされるため、「各桁」という概念がありません。そこで、まずは整数を文字列(String型)に変換します。

2.「各桁」を「文字列のi番目」という形で一つずつ取り出す

文字列(String型)に変換することで、文字列の0番目=1となり、例えばdata[0]で1のみを取り出すことができるようになります。
(data、には文字列を定義した変数が入ります)

3.取り出した「文字列のi番目」を整数に変換

また整数型に戻します。文字列からdata[0]で取り出した「1」は文字(String型)です。

そのため、例えばdata[0] + data[1]とそのまま書いてしまうと、12が出力されます。文字(String型)を+すると、そのまま繋げてしまうのです。

今回は和、つまり計算結果を出力させたいので、一度整数に戻す必要があるのです。

4.変換した「文字列のi番目」を足していく

整数型に戻した後、+することで和となります。


処理をコードで表現してみる
上で整理した処理内容を元に、コードを書いてみます。
筆者もJS初心者なので、難しいコードではありません。

〜登場人物紹介〜
allsum:ファンクションの名前です。allsum(入力)で実行可能。
num:各桁の和を求めたい整数をいれる変数です。上の例に従うなら、12345を入れます。
sum:各桁の和を表す変数です。最初は0ですが、各桁をどんどん取り出し、この変数に加算していく形で、「各桁の和」とします。

function allsum(num){

    //String型に変換
    num = num.toString();

    //各桁の和を表す変数sumを定義
    let sum = 0;

    //文字列のi番目を取り出し、sumに足していく
    for(let i=0; i < num.length; i++){
    sum = sum + parseInt(num[i])
  }
  return parseInt(sum);
}

このようになります。

for文を回す際、i < num.lengthがポイントです。
iは0から数えますが、num.lengthは1から数えます。

つまり、12345の場合、num[0]〜num[4]で1〜5を取り出しますが、num.lengthは単純に5となります。

そのため、i <= num.lengthと記述してしまうと、num[5]も取り出して和に加えようとします。しかし、num[5]は存在しないので、計算結果はNaNとなってしまうのです(1敗)。


実際の出力
allsumという名前のファンクションを定義しています。
このallsumに整数を入力すると、各桁の和が出力されてリターンされます。

console.log(allsum(12345)); 15

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?