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?

1voto

Imanou Petit Points 43068

Une approche fonctionnelle pour obtenir les chiffres d'un nombre consisterait à obtenir une chaîne à partir de votre nombre, la diviser en un tableau (de caractères) et mapper chaque élément en un nombre.

Par exemple:

var number = 123456;

var array = number.toString()
.split('')
.map(function(item, index) {
   return parseInt(item);
});

console.log(array); // retourne [1, 2, 3, 4, 5, 6]

Si vous avez également besoin de sommer tous les chiffres, vous pouvez ajouter la méthode reduce() au code précédent:

var num = 123456;

var array = num.toString()
.split('')
.map(function(item, index) {
   return parseInt(item);
})
.reduce(function(previousValue, currentValue, index, array) {
  return previousValue + currentValue;
}, 0);

console.log(array); // retourne 21

En alternative, avec ECMAScript 2015 (6ème édition), vous pouvez utiliser les fonctions fléchées:

var number = 123456;
var array = number.toString().split('').map((item, index) => parseInt(item));
console.log(array); // retourne [1, 2, 3, 4, 5, 6]

Si vous avez besoin de sommer tous les chiffres, vous pouvez ajouter la méthode reduce() au code précédent:

var num = 123456;

var result = num.toString()
.split('')
.map((item, index) => parseInt(item))
.reduce((previousValue, currentValue) => previousValue + currentValue, 0);

console.log(result); // retourne 21

1voto

makkBit Points 315

J'ai utilisé cette méthode simple pour le faire.

Pour diviser les chiffres

var N = 69;
var arr = N.toString().split('').map(Number)
// outputs [6,9]
console.log( arr ); 

Pour les ajouter ensemble

console.log(arr.reduce( (a,b) => a+b )); // 15

1voto

Attersson Points 3507

Et le plus facile.... num_string.split('').map(Number)

Essayez ci-dessous:

console.log((''+123).split('').map(Number))

1voto

SNOSeeds Points 11

Pour simplement diviser un entier en ses chiffres individuels dans le même ordre, l'Expression Régulière est ce que j'ai utilisé et que je préfère car elle évite de perdre l'identité des nombres même après les avoir convertis en chaîne de caractères.

La ligne de code suivante convertit l'entier en une chaîne de caractères, utilise une regex pour rechercher chaque chiffre individuel à l'intérieur de la chaîne et retourne un tableau de ces chiffres, après quoi ce tableau est mappé pour être reconverti en nombres.

const digitize = n => String(n).match(/\d/g).map(Number);

1voto

Roberto Garcia Points 35

Je pourrais me tromper, mais une solution ramassant des morceaux. Peut-être, comme je suis encore en train d'apprendre, c'est que la fonction fait beaucoup de choses en une seule. N'hésitez pas à me corriger, s'il vous plaît.

const totalSum = (num) => [...num + ' '].map(Number).reduce((a, b) => a + b);

Donc, nous prenons le paramètre et le convertissons en un tableau, en ajoutant des espaces vides. Nous effectuons cette opération sur chaque élément individuel et le poussons dans un nouveau tableau avec la méthode map. Une fois séparé, nous utilisons reduce pour additionner tous les éléments et obtenir le total.

Comme je l'ai dit, n'hésitez pas à me corriger ou à améliorer la fonction si vous voyez quelque chose que je n'ai pas vu.

J'ai presque oublié, au cas où :

const totalSum = (num) => ( num === 0 || num < 0) ? 'J'ai besoin d'un nombre positif' : [...num + ' '].map(Number).reduce((a, b) => a + b);

Si des nombres négatifs ou tout simplement zéro sont passés en paramètres. Bon codage à tous.

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