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
number.toString().match(/\d/g).length
.x | 0
to kolejna krótka i szybka wersja programuMath.floor(x)
, która zaokrągla liczbę w dół. Możesz osiągnąć to samo dzięki~~x
. Więcej wyjaśnień na ten temat zawiera następujące pytanie: stackoverflow.com/q/9049677/1249581 .Oto odpowiedź matematyczna (działa również dla liczb ujemnych):
I zoptymalizowana wersja powyższego (bardziej wydajne operacje bitowe):
Zasadniczo zaczynamy od uzyskania wartości bezwzględnej danych wejściowych, aby umożliwić poprawne działanie wartości ujemnych. Następnie przeprowadzamy operację log10, aby określić, jaka potęga 10 jest na wejściu (jeśli pracujesz w innej bazie, użyłbyś logarytmu dla tej podstawy), czyli liczby cyfr. Następnie ustawiamy wartość wyjściową, aby pobrać tylko część całkowitą. Na koniec używamy funkcji max do ustalania wartości dziesiętnych (każda wartość ułamkowa między 0 a 1 zwraca tylko 1 zamiast liczby ujemnej) i dodajemy 1 do końcowego wyniku, aby uzyskać liczbę.
Powyższe zakłada (na podstawie przykładowych danych wejściowych), że chcesz policzyć liczbę cyfr w liczbach całkowitych (więc 12345 = 5, a zatem również 12345.678 = 5). Jeśli chcesz policzyć całkowitą liczbę cyfr w wartości (czyli 12345,678 = 8), dodaj to przed „zwrotem” w którejkolwiek z powyższych funkcji:
źródło
Math.LOG10E
istnieje od wersji ES1, co oznacza, żeMath.log(x) * Math.LOG10E
będzie działać pod kątem kompatybilności.Ponieważ pojawiło się to w wyszukiwarce Google dla „javascript pobierz liczbę cyfr”, chciałem rzucić tam, że istnieje krótsza alternatywa dla tego, która polega na wewnętrznym przesyłaniu, które można wykonać za Ciebie:
Plony
źródło
Jeśli potrzebujesz cyfr (po separatorze), możesz po prostu podzielić liczbę i policzyć długość drugiej części (po punkcie).
źródło
źródło
Wciąż uczę się Javascript, ale jakiś czas temu wymyśliłem tę funkcję w C, która używa matematyki i pętli while zamiast ciągu znaków, więc ponownie napisałem ją dla Javascript. Może dałoby się to jakoś rekurencyjnie zrobić, ale nadal nie do końca zrozumiałem koncepcję :( To najlepsze, co mogłem wymyślić. Nie jestem pewien, z jak dużą liczbą liczb to działa, zadziałało, gdy wstawię sto cyfry.
edit: działa tylko z wartościami całkowitymi
źródło
Uwaga: Ta funkcja będzie ignorować liczb po przecinku średniej kropką , Jeśli chce liczyć z przecinku następnie usunąć
Math.floor()
. Sprawdź to bezpośrednio!// ES5 +
Zasadniczo, co się tutaj dzieje.
toString()
i taString()
sama funkcja wbudowana do konwersji cyfry na łańcuch, po przekonwertowaniu znajdziemy długość ciągu za pomocą funkcji wbudowanejlength
.Uwaga: Ale ta funkcja nie działałaby poprawnie dla liczby ujemnej, jeśli próbujesz grać z liczbą ujemną, sprawdź tę odpowiedź Lub po prostu ją wstaw
Math.abs()
;Wspieram cię!
źródło
źródło
Dwie cyfry: prosta funkcja w przypadku, gdy potrzebujesz dwóch lub więcej cyfr numeru z ECMAScript 6 (ES6):
źródło
Instrukcja problemu: Policz liczbę / ciąg bez funkcji string.length () js. Rozwiązanie: moglibyśmy to zrobić przez Forloop. na przykład
}
źródło
Oto moje rozwiązanie. Działa z liczbami dodatnimi i ujemnymi. Mam nadzieję że to pomoże
źródło
byłoby łatwo uzyskać długość jako
gdzie NUM to liczba, dla której należy uzyskać długość
źródło
Możesz użyć w tej sztuczce
(''+number).length
źródło
Aby uzyskać długość numeru, użyj następującego wyrażenia.
źródło
Właściwość length zwraca długość łańcucha (liczbę znaków).
Długość pustego ciągu wynosi 0.
Wynik n będzie: 12
Wynik n będzie: 0
Właściwość length ustawia lub zwraca liczbę elementów w tablicy.
Rezultatem będzie: 4
Składnia:
Zwróć długość tablicy:
Ustaw długość tablicy:
źródło