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
number.toString().match(/\d/g).length
.x | 0
ist nur eine weitere kurze und schnelle Version vonMath.floor(x)
, die die Zahl abrundet. Sie können das gleiche mit erreichen~~x
. Die folgende Frage enthält weitere Erläuterungen zu diesem Punkt: stackoverflow.com/q/9049677/1249581 .Hier ist eine mathematische Antwort (funktioniert auch für negative Zahlen):
Und eine optimierte Version der oben genannten (effizientere bitweise Operationen):
Im Wesentlichen beginnen wir damit, den absoluten Wert der Eingabe zu ermitteln, damit negative Werte korrekt funktionieren. Dann führen wir die log10-Operation durch, um uns die Potenz von 10 der Eingabe zu geben (wenn Sie in einer anderen Basis arbeiten würden, würden Sie den Logarithmus für diese Basis verwenden), dh die Anzahl der Stellen. Dann setzen wir die Ausgabe auf den Boden, um nur den ganzzahligen Teil davon zu erfassen. Schließlich verwenden wir die Funktion max, um Dezimalwerte festzulegen (jeder Bruchwert zwischen 0 und 1 gibt nur 1 anstelle einer negativen Zahl zurück) und addieren 1 zur endgültigen Ausgabe, um die Anzahl zu erhalten.
Das Obige setzt voraus (basierend auf Ihrer Beispieleingabe), dass Sie die Anzahl der Ziffern in ganzen Zahlen zählen möchten (also 12345 = 5 und damit auch 12345.678 = 5). Wenn Sie die Gesamtzahl der Stellen im Wert zählen möchten (also 12345.678 = 8), fügen Sie diese vor der 'Rückgabe' in einer der obigen Funktionen hinzu:
quelle
Math.LOG10E
gibt es seit ES1, was bedeutetMath.log(x) * Math.LOG10E
, dass die Kompatibilität gewährleistet ist.Da dies bei einer Google-Suche nach "Javascript Get Number of Digits" auftauchte, wollte ich darauf hinweisen, dass es eine kürzere Alternative dazu gibt, die auf internem Casting für Sie beruht:
Erträge
quelle
Wenn Sie Ziffern benötigen (nach dem Trennzeichen), können Sie einfach den zweiten Teil (nach dem Punkt) teilen und die Länge zählen.
quelle
quelle
Ich lerne immer noch Javascript, aber ich habe diese Funktion vor einiger Zeit in C entwickelt, die Mathe und eine while-Schleife anstelle eines Strings verwendet, also habe ich sie für Javascript neu geschrieben. Vielleicht könnte dies irgendwie rekursiv gemacht werden, aber ich habe das Konzept immer noch nicht wirklich verstanden :( Dies ist das Beste, was ich mir einfallen lassen kann. Ich bin mir nicht sicher, mit wie vielen Zahlen es funktioniert, es hat funktioniert, als ich hundert eingegeben habe Ziffern.
Bearbeiten: Funktioniert nur mit ganzzahligen Werten
quelle
Hinweis: Diese Funktion wird ignoriert die Zahlen nach dem Komma mittleren Punkt , wenn Sie mit dezimal zählen Wanna dann entfernen
Math.floor()
. Direkt zum Punkt check this out!// ES5 +
Grundsätzlich, was hier los ist.
toString()
undString()
dieselbe integrierte Funktion zum Konvertieren von Ziffern in Zeichenfolgen. Sobald wir konvertiert haben, ermitteln wir die Länge der Zeichenfolge anhand der integrierten Funktionlength
.Warnung: Aber diese Funktion würde bei negativen Zahlen nicht richtig funktionieren. Wenn Sie versuchen, mit negativen Zahlen zu spielen, überprüfen Sie diese Antwort oder setzen Sie sie einfach
Math.abs()
.Cheer You!
quelle
quelle
Zwei Ziffern: einfache Funktion für den Fall, dass Sie mit ECMAScript 6 (ES6) zwei oder mehr Ziffern einer Zahl benötigen:
quelle
Problemstellung: Anzahl / Zeichenfolge ohne Verwendung der Funktion string.length () zählen. Lösung: Wir könnten dies über den Forloop tun. z.B
}}
quelle
Hier ist meine Lösung. Es funktioniert mit positiven und negativen Zahlen. Hoffe das hilft
quelle
es wäre einfach, die Länge als zu bekommen
Dabei ist NUM die Nummer, für die die Länge ermittelt werden soll
quelle
Sie können in diesem Trick verwenden
(''+number).length
quelle
Bitte verwenden Sie den folgenden Ausdruck, um die Länge der Nummer zu ermitteln.
quelle
Die length-Eigenschaft gibt die Länge einer Zeichenfolge (Anzahl der Zeichen) zurück.
Die Länge einer leeren Zeichenfolge beträgt 0.
Das Ergebnis von n ist: 12
Das Ergebnis von n ist: 0
Die Eigenschaft length legt die Anzahl der Elemente in einem Array fest oder gibt diese zurück.
Das Ergebnis ist: 4
Syntax:
Geben Sie die Länge eines Arrays zurück:
Legen Sie die Länge eines Arrays fest:
quelle