length
ist eine Eigenschaft, keine Methode. Sie können es nicht nennen, daher benötigen Sie keine Klammern ()
:
function getlength(number) {
return number.toString().length;
}
UPDATE: Wie in den Kommentaren erläutert, funktioniert das obige Beispiel nicht für Float-Nummern. Damit es funktioniert, können wir entweder einen Punkt mit String(number).replace('.', '').length
entfernen oder die Ziffern mit regulären Ausdrücken zählen : String(number).match(/\d/g).length
.
In Bezug auf die Geschwindigkeit ist es möglicherweise der mathematisch schnellste Weg, die Anzahl der Stellen in der angegebenen Anzahl zu ermitteln. Für positive ganze Zahlen gibt es einen wunderbaren Algorithmus mit log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
Für alle Arten von Ganzzahlen (einschließlich Negative) gibt es eine brillant optimierte Lösung von @ Mwr247. Seien Sie jedoch vorsichtig bei der Verwendung Math.log10
, da diese von vielen älteren Browsern nicht unterstützt wird. Durch Ersetzen Math.log10(x)
durch Math.log(x) * Math.LOG10E
wird das Kompatibilitätsproblem gelöst.
Das Erstellen schneller mathematischer Lösungen für Dezimalzahlen ist aufgrund des bekannten Verhaltens der Gleitkomma-Mathematik nicht einfach , sodass der Cast-to-String-Ansatz einfacher und narrensicherer ist. Wie von @streetlogics erwähnt, kann schnelles Casting mit einer einfachen Verkettung von Zahlen zu Zeichenfolgen durchgeführt werden. Dies führt dazu , dass die Ersetzungslösung in Folgendes umgewandelt wird:
var length = (number + '').replace('.', '').length; // for floats