length
jest właściwością, a nie metodą. Nie możesz tego nazwać, więc nie potrzebujesz nawiasów ()
:
function getlength(number) {
return number.toString().length;
}
AKTUALIZACJA: Jak omówiono w komentarzach, powyższy przykład nie będzie działał dla liczb zmiennoprzecinkowych. Aby uczynić go pracy możemy albo pozbyć okres z String(number).replace('.', '').length
, lub liczyć cyfry z wyrażenia regularnego: String(number).match(/\d/g).length
.
Pod względem szybkości, potencjalnie najszybszym sposobem uzyskania liczby cyfr w podanej liczbie jest zrobienie tego matematycznie. Dla dodatnich liczb całkowitych istnieje wspaniały algorytm z log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Dla wszystkich typów liczb całkowitych (w tym ujemnych) istnieje doskonałe, zoptymalizowane rozwiązanie od @ Mwr247 , ale należy zachować ostrożność Math.log10
, ponieważ nie jest obsługiwane przez wiele starszych przeglądarek. Więc wymianie Math.log10(x)
z Math.log(x) * Math.LOG10E
rozwiąże problem ze zgodnością.
Tworzenie szybkich rozwiązań matematycznych dla liczb dziesiętnych nie będzie łatwe ze względu na dobrze znane zachowanie matematyki zmiennoprzecinkowej , więc podejście rzutowania na łańcuch będzie łatwiejsze i bardziej głupie. Jak wspomniano przez @streetlogics szybko odlewania można zrobić z prostego liczby na ciąg konkatenacji, prowadząc zastąpi rozwiązanie zostać przekształcone do:
var length = (number + '').replace('.', '').length; // for floats