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