Heim > Web-Frontend > js-Tutorial > Hauptteil

So ermitteln Sie, ob ein Wert in Javascript eine Ganzzahl ist

青灯夜游
Freigeben: 2023-01-05 16:11:35
Original
3086 Leute haben es durchsucht

Beurteilungsmethode: 1. Verwenden Sie die Anweisung „value%1===0“; 2. Verwenden Sie die Anweisung „Math.floor(value)===value“; =value“ ”-Anweisung; 4. Verwenden Sie die Anweisung „(value|0)===value“; 5. Verwenden Sie die Anweisung „Number.isInteger(value)“.

So ermitteln Sie, ob ein Wert in Javascript eine Ganzzahl ist

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

JavaScript unterscheidet nicht zwischen Ganzzahlen und Gleitkommazahlen. Alle Zahlen werden intern im 64-Bit-Gleitkommaformat dargestellt, genau wie der Double-Typ von Java. Tatsächliche Operationen wie Array-Indizierung und Bitoperationen basieren jedoch auf 32-Bit-Ganzzahlen. Wie kann man also feststellen, ob es sich um einen Ganzzahltyp (Integer) handelt?

Methode 1: Verwenden Sie den Restoperator, um zu bestimmen,

Jede ganze Zahl ist durch 1 teilbar, d. h. der Rest ist 0. Verwenden Sie diese Regel, um zu bestimmen, ob es sich um eine Ganzzahl handelt.

function isInteger(obj) {
 return obj%1 === 0
}
isInteger(3) // true
isInteger(3.3) // false 
Nach dem Login kopieren

Aus der obigen Ausgabe ist ersichtlich, dass diese Funktion sehr nützlich ist, aber für Zeichenfolgen und einige Sonderwerte machtlos.

isInteger('') // true
isInteger('3') // true
isInteger(true) // true
isInteger([]) // true
Nach dem Login kopieren

Sie gibt „true“ für leere Zeichenfolgen, Zeichenfolgentypzahlen, boolesche Werte „true“ und leere Arrays zurück. Es ist wirklich schwierig, es zu akzeptieren. Wenn Sie an den internen Konvertierungsdetails dieser Typen interessiert sind, lesen Sie bitte: Seltsame falsche Werte in JavaScript

Daher müssen Sie zunächst feststellen, ob das Objekt eine Zahl ist, z. B. durch Hinzufügen eines Typs von

function isInteger(obj) {
 return typeof obj === 'number' && obj%1 === 0
}
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Nach dem Login kopieren

Nun, das ist perfekter.

Methode 2: Verwenden Sie Math.floor, um zu bestimmen, ob die

Ganzzahl nach dem Runden immer noch sich selbst entspricht. Verwenden Sie diese Funktion, um zu bestimmen, ob es sich um eine Ganzzahl handelt. Das Math.floor-Beispiel lautet wie folgt:

function isInteger(obj) {
 return Math.floor(obj) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Nach dem Login kopieren

Dies maskiert direkt die Zeichenfolge „true“ und die Codemenge ist geringer als bei der vorherigen Funktion.

Methode 3: Nach parseInt urteilen

function isInteger(obj) {
 return parseInt(obj, 10) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Nach dem Login kopieren

ist sehr gut, aber es gibt auch einen Nachteil:

isInteger(1000000000000000000000) // false
Nach dem Login kopieren

gibt tatsächlich false zurück, was unvernünftig ist. Der Grund dafür ist, dass parseInt die Analyse des ersten Arguments in eine Zeichenfolge erzwingt, bevor die Ganzzahl analysiert wird. Diese Methode zur Konvertierung von Zahlen in ganze Zahlen ist keine gute Wahl.

Methode 4. Beurteilung durch Bitoperationen

function isInteger(obj) {
 return (obj | 0) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Nach dem Login kopieren

Diese Funktion ist sehr gut und sehr effizient. Aber es gibt einen Fehler. Wie oben erwähnt, können Bitoperationen nur Zahlen innerhalb von 32 Bit verarbeiten und können nichts mit mehr als 32 Bit tun, wie zum Beispiel

isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
Nach dem Login kopieren

Natürlich werden wir in den meisten Fällen keine so großen Zahlen verwenden.

Methode 5. ES6 bietet Number.isInteger

Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false
Nach dem Login kopieren

Derzeit wird es bereits vom neuesten Firefox und Chrome unterstützt.

Hinweis: Jede dieser fünf Methoden hat ihre eigenen Vor- und Nachteile. Sie können sie sorgfältig vergleichen und die beste für die Anwendung auswählen.

【Empfohlenes Lernen: Javascript-Tutorial für Fortgeschrittene

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob ein Wert in Javascript eine Ganzzahl ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage