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));
Von http://www.toptal.com/javascript/interview-questions:
function isInteger(x) { return (x^0) === x; }
Habe gefunden, dass dies der beste Weg ist, dies zu tun.
function isInteger(argument) { return argument == ~~argument; }
Verwendung:
isInteger(1); // true
isInteger(0.1); // false
isInteger("1"); // true
isInteger("0.1"); // false
oder:
function isInteger(argument) { return argument == argument + 0 && argument == ~~argument; }
Verwendung:
isInteger(1); // true
isInteger(0.1); // false
isInteger("1"); // false
isInteger("0.1"); // false
Mit den heutigen Browsern ist Number.isInteger()
der richtige Weg, wie viele Antworten zuvor erklärt haben. Allerdings bin ich auf ein häufiges Problem gestoßen, das auftrat, als ich die API
erstellt habe.
Bei der API
-Anfrage erhalten wir Eigenschaften als string
, sodass Number.isInteger()
false
zurückgibt.
Wenn wir versuchen, es mit Number.isInteger(parseInt())
zu überprüfen, werden Werte wie 1.1
oder 1.asd
true
zurückgeben.
Um dieses Problem zu lösen, habe ich eine Funktion erstellt, die überprüft, ob der Wert als integer
betrachtet wird, unabhängig davon, ob er als integer
oder string
übergeben wird.
function isNumber(value) {
return ([...value.toString()]
.filter(x => [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ]
.indexOf(x) >= 0))
.length == Math.max(value.toString().length, 1)
}
Der Math.max()
-Teil wird benötigt, um leere Zeichenfolgen zu behandeln.
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.