111 votes

Veuillez traduire ceci tout en conservant les mêmes balises HTML, le cas échéant, de l'anglais vers le français : JavaScript Nombre divisé en chiffres individuels

Je suis en train d'essayer de résoudre un problème de mathématiques où je prends un nombre par exemple 45, ou 111 et ensuite je divise le nombre en chiffres séparés par exemple 4 5 ou 1 1 1. Ensuite, je vais enregistrer chaque nombre dans une variable pour exécuter une méthode. Est-ce que quelqu'un sait comment diviser un nombre en chiffres individuels?

Par exemple, j'ai une boucle qui s'exécute sur un tableau :

for (var i = 0; i < range.length; i++) {
  var n = range[i];
}

Pour chaque nombre, j'aimerais diviser ses chiffres et les additionner?

11voto

le_m Points 758
// Scinde un entier positif n < 1e21 en chiffres :
function digits(n) {
  return Array.from(String(n), Number);
}

// Exemple :
console.log(digits(1234)); // [1, 2, 3, 4]

8voto

Giacomo Casadei Points 533

Utilisez String, split et map :

String(number).split("").map(Number);

function splitNum(num) {
    return String(num).split("").map(Number);
}

console.log(splitNum(1523)); // [1, 5, 2, 3]
console.log(splitNum(2341)); // [2, 3, 4, 1]
console.log(splitNum(325)); // [3, 2, 5]

5voto

Narendra Yadala Points 5685

Vous pouvez travailler sur des chaînes de caractères au lieu de nombres pour y parvenir. Vous pouvez le faire comme ceci

(111 + '').split('')

Cela renverra un tableau de chaînes de caractères ['1','1','1'] sur lequel vous pouvez itérer et appeler la méthode parseInt.

parseInt('1') === 1

Si vous voulez la somme des chiffres individuels, vous pouvez utiliser la fonction reduce (implémentée à partir de Javascript 1.8) comme ceci

(111 + '').split('').reduce(function(previousValue, currentValue){  
  return parseInt(previousValue,10) + parseInt(currentValue,10);  
})

4voto

karaxuna Points 11303

Sans conversion en chaîne de caractères:

function toDigits(number) {
    var left;
    var results = [];

    while (true) {
        left = number % 10;
        results.unshift(left);
        number = (number - left) / 10;
        if (number === 0) {
            break;
        }
    }

    return results;
}

4voto

Siva K V Points 7557

Utilisation de String, ... et map

const num = 7890;

const digits = [...String(num)].map(Number);

console.log(digits)

Alternativement, en utilisant ... et reduce pour obtenir les chiffres et leur somme.

const sumOfDigits = num => [...""+num].reduce((acc, dig) => acc + +dig, 0);

console.log('Somme des chiffres: ', sumOfDigits(7890));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X