web-dev-qa-db-ja.com

数値Javascriptのすべての数字を合計する

私は初心者です。

数字のすべての桁の合計を計算する小さなアプリを作りたいです。

たとえば、2568という数字がある場合、アプリは21と等しい2 + 5 + 6 + 8を計算します。最後に、21桁の合計を計算し、最終結果は3になります。

私を助けてください

9

基本的に、整数のすべての部分の合計を取得する2つのメソッドがあります。

  • 数値演算を使用

    数を取り、残りの10を作成して追加します。次に、10で割った数値の整数部分を取ります。次に進みます。

var value = 2568,
    sum = 0;

while (value) {
    sum += value % 10;
    value = Math.floor(value / 10);
}

console.log(sum);
  • 文字列操作を使用

    数値を文字列に変換し、文字列を分割して、すべての数字を含む配列を取得し、すべての部分に対してreduceを実行し、合計を返します。

var value = 2568,
    sum = value
        .toString()
        .split('')
        .map(Number)
        .reduce(function (a, b) {
            return a + b;
        }, 0);

console.log(sum);

値を返すには、valueプロパティを追加する必要があります。

rezultat.value = sum;
//      ^^^^^^
function sumDigits() {
    var value = document.getElementById("thenumber").value,
        sum = 0;

  while (value) {
      sum += value % 10;
      value = Math.floor(value / 10);
  }
  
  var rezultat = document.getElementById("result");
  rezultat.value = sum;
}
<input type="text" placeholder="number" id="thenumber"/><br/><br/>
<button onclick="sumDigits()">Calculate</button><br/><br/>
<input type="text" readonly="true" placeholder="the result" id="result"/>
17
Nina Scholz

モジュロ9演算を使用したこの簡単なアプローチはどうですか?

function sumDigits(n) {
  return (n - 1) % 9 + 1;
}
26

値の桁の合計を計算する場合。

var value=2568;

while(value > 9){
    value=sum(value);
}
console.log(value)
                
function sum(value){
    var sum=value.toString().split("")
                 .reduce(function(a,b) {
                          return a+parseInt(b);
                  },0);
    return sum;
}
2
Narendra Manam
var value = -2568;
console.log(Math.abs(value % 9));

答えは3です

1
user8899119

これは私がこれを解決した方法です:

function sumOfDigits(number) {    
    Math.abs(number).toString().split('').reduce(function(a,b){return +a + +b}, 0);
}

これは戻ります

sumOfDigits(10);  // Returns 1
sumOfDigits(-32); // Returns 5

値が10より大きい場合、関数をループします

1

たとえば、55555という数字がある場合、アプリは25と等しい5 + 5 + 5 + 5 + 5を計算します。最後に、25桁の合計を計算し、最終結果は7になります。

let value =55555; // => 25 => 7
function sumOfEachDigits(number) {    
    return Math.abs(number).toString().split('').reduce(function(a,b){return +a + +b}, 0);
}
while(value > 9){
    value=sumOfEachDigits(value);
}
console.log(value); // Result is 9
0
var value = 2568,
    sum = 0;

while (value) {
    sum += value % 10;
    value = Math.floor(value / 10);
}

console.log(sum);
0
siewe

以下は、NaNシナリオも処理するソリューションです。

function add(num) {
   var sum = 0;
   do {
       sum = sum + num%10;
       num = Math.floor(num/10);
   } while (num);
   return sum;
}
console.log(add())//NaN
console.log(add(1234))//10

do ... whileループは、whileループよりもこの問題に適しています。

0