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
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"/>
Qu'en est-il de cette approche simple utilisant l'arithmétique modulo 9?
function sumDigits(n) {
return (n - 1) % 9 + 1;
}
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;
}
var value = -2568;
console.log(Math.abs(value % 9));
La réponse est 3
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.
var value = 2568,
sum = 0;
while (value) {
sum += value % 10;
value = Math.floor(value / 10);
}
console.log(sum);
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.