length
es una propiedad, no un método No puede llamarlo, por lo tanto, no necesita paréntesis ()
:
function getlength(number) {
return number.toString().length;
}
ACTUALIZACIÓN: Como se discutió en los comentarios, el ejemplo anterior no funcionará para números flotantes. Para hacer que funcione bien nos podemos deshacernos de un período con String(number).replace('.', '').length
, o contar con los dígitos expresión regular: String(number).match(/\d/g).length
.
En términos de velocidad, potencialmente la forma más rápida de obtener el número de dígitos en el número dado es hacerlo matemáticamente. Para enteros positivos hay un algoritmo maravilloso con log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Para todos los tipos de enteros (incluidos los negativos) hay una solución optimizada brillante de @ Mwr247 , pero tenga cuidado con el uso Math.log10
, ya que no es compatible con muchos navegadores heredados. Por lo tanto, reemplazar Math.log10(x)
con Math.log(x) * Math.LOG10E
resolverá el problema de compatibilidad.
Crear soluciones matemáticas rápidas para números decimales no será fácil debido al comportamiento bien conocido de las matemáticas de coma flotante , por lo que el enfoque de conversión a cuerda será más fácil y a prueba de tontos. Como se menciona en @streetlogics, la conversión rápida se puede hacer con una simple concatenación de números a cadenas, lo que lleva a que la solución de reemplazo se transforme en:
var length = (number + '').replace('.', '').length; // for floats
number.toString().match(/\d/g).length
.x | 0
es solo otra versión corta y rápida deMath.floor(x)
, que redondea el número. Puedes lograr lo mismo con~~x
. La siguiente pregunta proporciona más explicaciones sobre el punto: stackoverflow.com/q/9049677/1249581 .Aquí hay una respuesta matemática (también funciona para números negativos):
Y una versión optimizada de lo anterior (operaciones bit a bit más eficientes):
Esencialmente, comenzamos obteniendo el valor absoluto de la entrada para permitir que los valores negativos funcionen correctamente. Luego ejecutamos a través de la operación log10 para darnos qué potencia de 10 es la entrada (si estuviera trabajando en otra base, usaría el logaritmo para esa base), que es el número de dígitos. Luego colocamos el resultado en el piso para tomar solo la parte entera de eso. Finalmente, usamos la función max para fijar los valores decimales (cualquier valor fraccionario entre 0 y 1 solo devuelve 1, en lugar de un número negativo), y agregamos 1 a la salida final para obtener el recuento.
Lo anterior supone (según su entrada de ejemplo) que desea contar el número de dígitos en enteros (por lo tanto, 12345 = 5 y, por lo tanto, 12345.678 = 5 también). Si desea contar el número total de dígitos en el valor (por lo tanto, 12345.678 = 8), agregue esto antes del 'retorno' en cualquiera de las funciones anteriores:
fuente
Math.LOG10E
ha existido desde ES1, lo que significaMath.log(x) * Math.LOG10E
que funcionará por compatibilidad.Dado que esto surgió en una búsqueda en Google de "javascript get number of digits", quería decir que hay una alternativa más corta a esto que se basa en la conversión interna que se debe hacer para usted:
Rendimientos
fuente
Si necesita dígitos (después del separador), simplemente puede dividir el número y contar la longitud de la segunda parte (después del punto).
fuente
fuente
Todavía estoy aprendiendo Javascript, pero se me ocurrió esta función en C hace un tiempo, que usa matemáticas y un ciclo while en lugar de una cadena, así que la reescribí para Javascript. Tal vez esto podría hacerse recursivamente de alguna manera, pero todavía no he entendido realmente el concepto :( Esto es lo mejor que se me ocurrió. No estoy seguro de con cuántos números funciona, funcionó cuando puse cien dígitos
editar: solo funciona con valores enteros
fuente
Nota: Esta función ignorar los números después de la media decimal de puntos , si quieres contar con decimales a continuación, quitar el
Math.floor()
. Directo al punto, ¡mira esto!// ES5 +
Básicamente lo que está pasando aquí.
toString()
y laString()
misma función incorporada para convertir dígitos en cadena, una vez que hayamos convertido, encontraremos la longitud de la cadena por función incorporadalength
.Alerta: Pero esta función no funcionaría correctamente para un número negativo, si intentas jugar con un número negativo, verifica esta respuesta o simplemente ponla
Math.abs()
;¡Animarte!
fuente
fuente
Dos dígitos: función simple en caso de que necesite dos o más dígitos de un número con ECMAScript 6 (ES6):
fuente
Declaración del problema: Cuente el número / cadena que no utiliza string.length () jsfunction. Solución: podríamos hacer esto a través de Forloop. p.ej
}
fuente
Aquí está mi solución. Funciona con números positivos y negativos. Espero que esto ayude
fuente
sería simple obtener la longitud como
donde NUM es el número para obtener la longitud de
fuente
Puedes usar en este truco
(''+number).length
fuente
Utilice la siguiente expresión para obtener la longitud del número.
fuente
La propiedad de longitud devuelve la longitud de una cadena (número de caracteres).
La longitud de una cadena vacía es 0.
El resultado de n será: 12
El resultado de n será: 0
La propiedad de longitud establece o devuelve el número de elementos en una matriz.
El resultado será: 4
Sintaxis:
Devuelve la longitud de una matriz:
Establecer la longitud de una matriz:
fuente