web-dev-qa-db-fra.com

Somme tous les chiffres d'un nombre Javascript

Je suis novice.

Je veux faire une petite application qui calculera la somme de tous les chiffres d'un nombre.

Par exemple, si j'ai le numéro 2568, l'application calcule 2 + 5 + 6 + 8, ce qui correspond à 21. Enfin, elle calcule la somme des chiffres de 21 et le résultat final sera 3.

Aidez-moi, s'il vous plaît

4
Hodorogea Alexandru

En gros, vous avez deux méthodes pour obtenir la somme de toutes les parties d’un nombre entier.

  • À opérations numériques

    Prenez le nombre et construisez le reste de dix et ajoutez cela. Ensuite, prenez la partie entière de la division du nombre par 10. Continuez.

var value = 2568,
    sum = 0;

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

console.log(sum);

  • Utiliser des opérations sur les chaînes

    Convertissez le nombre en chaîne, divisez la chaîne et obtenez un tableau contenant tous les chiffres, effectuez une réduction pour chaque partie et renvoyez la somme.

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

console.log(sum);


Pour renvoyer la valeur, vous devez ajouter la propriété 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"/>

10
Nina Scholz

Qu'en est-il de cette approche simple utilisant l'arithmétique modulo 9?

function sumDigits(n) {
  return (n - 1) % 9 + 1;
}
13
Federico Antonucci

Si nous voulons calculer la somme des chiffres pour une valeur.

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;
}

1
Narendra Manam
var value = -2568;
console.log(Math.abs(value % 9));

La réponse est 3

1
user8899119

Voici comment j'ai résolu ceci:

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

cela va revenir 

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

Si la valeur est supérieure à 10, bouclez la fonction.

1

var value = 2568,
    sum = 0;

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

console.log(sum);

0
siewe

Vous trouverez ci-dessous une solution qui traitera même le scénario 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 ... boucle en boucle sera mieux pour ce problème plutôt que boucle en boucle. 

0
Devinder Suthwal