Nombre JavaScript divisés en chiffres
Salut, je suis en train d'essayer de résoudre un problème de maths où je prends un nombre par exemple, 45, ou 111, puis diviser le nombre séparer les chiffres par exemple de 4 à 5 ou de 1 1 1. Je vais ensuite enregistrer chaque numéro de la var pour exécuter une méthode. Quelqu'pas comment diviser un nombre en indivdual digitals.
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 numéro, je souhaite partager ses chiffres et les ajouter ensemble ?
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR: le Calcul d'une somme
console
API — changementconsole
àalert
.var sum = output.reduce((r,v) => r + v, 0);
.var sum = (x,y) => x+y; var total = output.reduce(sum);
JS:
var realDigits = digits.map(Number)
et nous avons un accordVous pouvez aussi le faire dans la partie "mathématique" sans traiter le nombre comme une chaîne de caractères:
JS:
L'un à l'envers, je peux voir, c'est que vous n'avez pas à exécuter
parseInt()
sur tous les chiffres, vous êtes en relation avec les chiffres comme des valeurs numériques.C'est le plus court que j'ai trouvé, mais il ne leur retour les chiffres comme des chaînes de caractères:
Ou de l'utiliser pour récupérer des entiers:
Je vais offrir une variation sur une réponse déjà donnée, de sorte que vous pouvez voir une approche différente qui préserve le type numérique tout au long de:
J'ai utilisé une technique comme ci-dessus à bon escient lors de la conversion d'un nombre en chiffres Romains, qui est une de mes façons préférées de commencer à apprendre un langage de programmation, je ne suis pas familier avec. Par exemple, voici comment j'ai inventé un moyen de convertir les nombres en chiffres Romains avec Tcl peu après le tournant du siècle: http://code.activestate.com/recipes/68379-conversion-to-roman-numerals/
Comparables lignes dans mon script Tcl en cours:
output.unshift
(au lieu depush
), ce qui rend lereverse()
inutiles -- beaucoup de gens ne parviennent pas à quelque chose deunshift
output.unshift
.Vous pouvez travailler sur des chaînes de caractères plutôt que des numéros pour atteindre cet objectif. Vous pouvez le faire comme ceci
Ceci renvoie un tableau de chaînes de caractères
['1','1','1']
sur lequel vous pouvez effectuer une itération sur et appelparseInt
méthode.Si vous souhaitez calculer la somme des chiffres individuels, vous pouvez utiliser la fonction de réduction (mis en œuvre à partir de Javascript 1.8), comme cela
JS:
J'ai utilisé de cette façon simple de le faire.
De diviser les chiffres
Pour les ajouter ensemble
Un plaisir introduction à la récursivité. Cette réponse prend un Nombre et renvoie un tableau de chiffres. Il ne pas convertir le nombre en une chaîne de caractères comme une étape intermédiaire.
Donné
n = 1234
,n % 10
sera de retour en premier (droit-humide) chiffres,4
n /10
sera de retour123
avec certains resteMath.floor
on peut hacher le reste horsMaintenant nous avons juste à construire la récursivité condition,
JS:
digits(123456789012)
retourne[-539222987, 2]
>>
je ne comprends pas très bien. Je me demande si c'est un bug?De séparer chacun des 2 parametr.
Ombre de l'Assistant , version étendue par Orien
de sortie:1000,500,20,3
Sans avoir à les convertir à la chaîne:
Et le plus facile....
num_string.split('').map(Number)
Essayer ci-dessous:
JS:
Avec ES6, vous pouvez utiliser
Array.à partir de
avec un instrument à cordes numéro iterables etNombre
que la cartographie de la fonction.JS:
Une approche fonctionnelle afin d'obtenir des chiffres d'un
number
serait d'obtenir unestring
de votrenumber
, de le fractionner en unarray
(de caractères) et de la carte de chaque élément de retour dans un certain nombre.Par exemple:
Si vous avez aussi besoin de la somme de tous les chiffres, vous pouvez ajouter le
réduire()
méthode pour le code précédent:Comme une alternative, avec ECMAScript 2015 (6e Édition), vous pouvez utiliser flèche fonctions:
Si vous avez besoin de la somme de tous les chiffres, vous pouvez ajouter le
reduce()
méthode pour le code précédent:Vous pouvez essayer cette.
Espère que cela a aidé!
À juste diviser un entier dans chacun de ses chiffres dans le même ordre, de l'Expression Régulière est ce que j'ai utilisé et préfère car il empêche la chance de perdre l'identité de l'un des numéros, même après qu'ils ont été convertis en chaîne.
La ligne de code suivante convertir un entier en chaîne de caractères, utilise les regex pour correspondre à toute personne de chiffres à l'intérieur de la chaîne et retourne un tableau de ceux-ci, après quoi ce tableau est mappé à être convertis en nombres.
const digitize = n => String(n).match(/\d/g).map(Number);
('' + 123456789).split('').map( x => +x ).reduce( (a,b) => a+b ) === 45
vrai
ou sans carte
('' + 123456789).split('').reduce( (a,b) => (+a)+(+b) ) === 45
vrai
Vous pouvez le faire en ligne, séparés les uns des chiffres que les additionner :
C'est mon court de solution.. avec la somme du nombre
javascript a une fonction pour cela et vous pouvez l'utiliser facilement.
par exemple :