Wie überprüfe ich in JavaScript, ob eine Variable eine Ganzzahl ist, und gebe einen Alert aus, wenn nicht? Ich habe es versucht, aber es funktioniert nicht:
var data = 22;
alert(NaN(data));
Wie überprüfe ich in JavaScript, ob eine Variable eine Ganzzahl ist, und gebe einen Alert aus, wenn nicht? Ich habe es versucht, aber es funktioniert nicht:
var data = 22;
alert(NaN(data));
Number.isInteger()
ist der beste Weg, wenn Ihr Browser es unterstützt. Andernfalls gibt es meiner Meinung nach viele Möglichkeiten:
function isInt1(value){
return (value^0) === value
}
oder:
function isInt2(value){
return (typeof value === 'number') && (value % 1 === 0);
}
oder:
function isInt3(value){
return parseInt(value, 10) === value;
}
oder:
function isInt4(value){
return Math.round(value) === value;
}
Jetzt können wir die Ergebnisse testen:
var value = 1
isInt1(value) // gibt true zurück
isInt2(value) // gibt true zurück
isInt3(value) // gibt true zurück
isInt4(value) // gibt true zurück
var value = 1.1
isInt1(value) // gibt false zurück
isInt2(value) // gibt false zurück
isInt3(value) // gibt false zurück
isInt4(value) // gibt false zurück
var value = 1000000000000000000
isInt1(value) // gibt false zurück
isInt2(value) // gibt true zurück
isInt3(value) // gibt false zurück
isInt4(value) // gibt true zurück
var value = undefined
isInt1(value) // gibt false zurück
isInt2(value) // gibt false zurück
isInt3(value) // gibt false zurück
isInt4(value) // gibt false zurück
var value = '1' // Zahl als Zeichenkette
isInt1(value) // gibt false zurück
isInt2(value) // gibt false zurück
isInt3(value) // gibt false zurück
isInt4(value) // gibt false zurück
Also, all diese Methoden funktionieren, aber wenn die Zahl sehr groß ist, funktionieren parseInt und der ^ Operator nicht gut.
Sie könnten versuchen Number.isInteger(Number(value))
, wenn value
möglicherweise eine Ganzzahl in Zeichenfolgenform ist, z.B. var value = "23"
und Sie möchten, dass dies als true
ausgewertet wird. Vermeiden Sie es, Number.isInteger(parseInt(value))
zu versuchen, weil dies nicht immer den richtigen Wert zurückgibt. z.B. wenn var value = "23abc"
ist und Sie die parseInt
Implementierung verwenden, würde es immer noch true zurückgeben.
Aber wenn Sie streng Ganzzahlenwerte wollen, dann sollte wahrscheinlich Number.isInteger(value)
den Trick tun.
Sie könnten diese Funktion verwenden:
function isInteger(value) {
return (value == parseInt(value));
}
Das wird auch true zurückgeben, wenn der Wert ein String ist, der einen Integer-Wert enthält.
Also werden die Ergebnisse sein:
alert(isInteger(1)); // true
alert(isInteger(1.2)); // false
alert(isInteger("1")); // true
alert(isInteger("1.2")); // false
alert(isInteger("abc")); // false
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.