length
est une propriété, pas une méthode. Vous ne pouvez pas l'appeler, vous n'avez donc pas besoin de parenthèses ()
:
function getlength(number) {
return number.toString().length;
}
MISE À JOUR: Comme indiqué dans les commentaires, l'exemple ci-dessus ne fonctionnera pas pour les nombres flottants. Pour le faire fonctionner , nous pouvons soit se débarrasser d'une période avec String(number).replace('.', '').length
, ou compter les chiffres avec une expression régulière: String(number).match(/\d/g).length
.
En termes de vitesse, le moyen le plus rapide d'obtenir le nombre de chiffres dans le nombre donné est de le faire mathématiquement. Pour les entiers positifs, il existe un merveilleux algorithme avec log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Pour tous les types d'entiers (y compris les négatifs), il existe une excellente solution optimisée de @ Mwr247 , mais soyez prudent avec l'utilisation Math.log10
, car elle n'est pas prise en charge par de nombreux navigateurs hérités. Le remplacement Math.log10(x)
par Math.log(x) * Math.LOG10E
résoudra donc le problème de compatibilité.
La création de solutions mathématiques rapides pour les nombres décimaux ne sera pas facile en raison du comportement bien connu des mathématiques en virgule flottante , donc l'approche de conversion en chaîne sera plus facile et infaillible. Comme mentionné par @streetlogics, le casting rapide peut être effectué avec une simple concaténation de nombre en chaîne, ce qui conduit la solution de remplacement à être transformée en:
var length = (number + '').replace('.', '').length; // for floats
number.toString().match(/\d/g).length
.x | 0
est juste une autre version courte et rapide deMath.floor(x)
, qui arrondit le nombre à la baisse. Vous pouvez réaliser la même chose avec~~x
. La question suivante fournit plus d'explications sur ce point: stackoverflow.com/q/9049677/1249581 .Voici une réponse mathématique (fonctionne également pour les nombres négatifs):
Et une version optimisée de ce qui précède (opérations au niveau du bit plus efficaces):
Essentiellement, nous commençons par obtenir la valeur absolue de l'entrée pour permettre aux valeurs négatives de fonctionner correctement. Ensuite, nous exécutons l'opération via log10 pour nous donner la puissance de 10 de l'entrée (si vous travailliez dans une autre base, vous utiliseriez le logarithme pour cette base), qui est le nombre de chiffres. Ensuite, nous plancher la sortie pour saisir uniquement la partie entière de celle-ci. Enfin, nous utilisons la fonction max pour fixer les valeurs décimales (toute valeur fractionnaire entre 0 et 1 renvoie simplement 1, au lieu d'un nombre négatif), et ajoutons 1 à la sortie finale pour obtenir le nombre.
Ce qui précède suppose (basé sur votre exemple d'entrée) que vous souhaitez compter le nombre de chiffres en nombres entiers (donc 12345 = 5, et donc 12345,678 = 5 également). Si vous souhaitez compter le nombre total de chiffres dans la valeur (donc 12345,678 = 8), ajoutez-le avant le `` retour '' dans l'une des fonctions ci-dessus:
la source
Math.LOG10E
existe depuis ES1, ce qui signifie queMath.log(x) * Math.LOG10E
cela fonctionnera pour la compatibilité.Depuis que cela est venu sur une recherche Google pour "javascript obtenir le nombre de chiffres", je voulais dire qu'il existe une alternative plus courte à cela qui repose sur la diffusion interne à faire pour vous:
Rendements
la source
Si vous avez besoin de chiffres (après le séparateur), vous pouvez simplement diviser le nombre et compter la deuxième partie de la longueur (après le point).
la source
la source
J'apprends encore en quelque sorte Javascript, mais j'ai inventé cette fonction en C il y a quelque temps, qui utilise les mathématiques et une boucle while plutôt qu'une chaîne, alors je l'ai réécrite pour Javascript. Peut-être que cela pourrait être fait récursivement d'une manière ou d'une autre, mais je n'ai toujours pas vraiment compris le concept: (C'est le meilleur que j'ai pu trouver. Je ne suis pas sûr de la quantité de nombres avec lesquels cela fonctionne, cela a fonctionné quand j'ai mis une centaine chiffres.
edit: ne fonctionne qu'avec des valeurs entières
la source
Remarque: Cette fonction ignorera les nombres après le point moyen décimal.Si vous voulez compter avec décimal, supprimez le
Math.floor()
. Directement au point, vérifiez ceci!// ES5 +
En gros, ce qui se passe ici.
toString()
etString()
même fonction intégrée pour la conversion de chiffre en chaîne, une fois que nous avons converti, nous trouverons la longueur de la chaîne par fonction intégréelength
.Alerte: Mais cette fonction ne fonctionnerait pas correctement pour un nombre négatif, si vous essayez de jouer avec un nombre négatif, vérifiez cette réponse Ou mettez-y simplement
Math.abs()
;Bravo!
la source
la source
Deux chiffres: fonction simple au cas où vous auriez besoin de deux chiffres ou plus d'un nombre avec ECMAScript 6 (ES6):
la source
Énoncé du problème: nombre / chaîne de comptage n'utilisant pas la fonction js string.length () . Solution: nous pourrions le faire via le Forloop. par exemple
}
la source
Voici ma solution. Cela fonctionne avec des nombres positifs et négatifs. J'espère que cela t'aides
la source
il serait simple d'obtenir la longueur comme
où NUM est le nombre pour obtenir la longueur
la source
Vous pouvez utiliser dans cette astuce
(''+number).length
la source
Veuillez utiliser l'expression suivante pour obtenir la longueur du nombre.
la source
La propriété length renvoie la longueur d'une chaîne (nombre de caractères).
La longueur d'une chaîne vide est de 0.
Le résultat de n sera: 12
Le résultat de n sera: 0
La propriété length définit ou renvoie le nombre d'éléments dans un tableau.
Le résultat sera: 4
Syntaxe:
Renvoie la longueur d'un tableau:
Définissez la longueur d'un tableau:
la source