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?

3voto

naomik Points 10423

Une introduction amusante à la récursivité. Cette réponse prend un nombre et renvoie un tableau des chiffres du nombre. Elle ne convertit pas le nombre en chaîne de caractères en tant qu'étape intermédiaire.

Étant donné n = 1234,

  • n % 10 retournera le premier chiffre (le chiffre le plus à droite), 4
  • n / 10 retournera 123 avec un reste
  • En utilisant Math.floor nous pouvons supprimer le reste
  • En répétant ces étapes, nous pouvons former le résultat entier

Il ne nous reste plus qu'à définir la condition de récursivité,

  • Si le nombre est déjà un seul chiffre (n < 10), renvoyer un tableau contenant uniquement ce chiffre
  • sinon (inductif), le nombre est 10 ou plus; récursiviter et le préfixer au premier chiffre

    const digits = (n = 0) =>
    n < 10
    ? [ n ]
    [ ... digits (Math.floor (n / 10)), n % 10 ]

    console.log (digits ()) // [ 0 ] console.log (digits (1)) // [ 1 ] console.log (digits (12)) // [ 1, 2 ] console.log (digits (123)) // [ 1, 2, 3 ] console.log (digits (11234)) // [ 1, 2, 3, 4 ]

    console.log (digits (123456789012)) // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2 ]

2voto

Jek-fdrv Points 114

Séparez chaque 2 paramètres.

function separateur(str,sep) {
    var output = '';
    for (var i = str.length; i > 0; i-=2) {
        var ii = i-1;
        if(output) {
            output = str.charAt(ii-1)+str.charAt(ii)+sep+output;
        } else {
            output = str.charAt(ii-1)+str.charAt(ii);
        }            
    }
    return output;
}
console.log(separateur('123456',':')); //Retournera 12:34:56

2voto

Nina Scholz Points 17120

Avec ES6, vous pourriez utiliser Array.from avec un nombre sous forme de chaîne en tant que itérable et Number en tant que fonction de mappage.

const getDigits = n => Array.from(n.toString(), Number);

console.log(getDigits(12345));

2voto

iampopov Points 21

Cela fonctionne également :

var number = 12354987;
console.log(String(number).split('').map(Number));

1voto

Orien Points 39

Shadow Wizard , version étendue par Orien

var num:Number = 1523;
var digits:Array = [];
var cnt:int = 0;
while (num > 0) {
    var mod:int = num % 10;
    digits.push(mod * Math.pow(10, cnt))

    num = Math.floor(num / 10);
    cnt++;
}
digits.reverse();
trace(digits);

output:1000,500,20,3

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