524 Stimmen

Wie überprüft man, ob eine Variable in JavaScript eine Ganzzahl ist?

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));

2voto

zangw Punkte 36978

Zusätzlich zu Number.isInteger() könnte Number.isSafeInteger() eine weitere Option sein hier unter Verwendung des in ES6 spezifizierten.

Um Number.isSafeInteger(..) in Pre-ES6-Browsern zu polyfillen:

Number.isSafeInteger = Number.isSafeInteger || function(num) {
    return typeof num === "number" && 
           isFinite(num) && 
           Math.floor(num) === num &&
           Math.abs( num ) <= Number.MAX_SAFE_INTEGER;
};

2voto

Sie können es auch auf diese Weise versuchen

var data = 22;
if (Number.isInteger(data)) {
    console.log("ganze Zahl");
 }else{
     console.log("keine ganze Zahl");
 }

oder

if (data === parseInt(data, 10)){
    console.log("ganze Zahl");
}else{
    console.log("keine ganze Zahl");
}

1voto

Dmitry Ragozin Punkte 65

Probieren Sie die folgende Funktion:

function isInteger (num) {
    return num == parseInt(+num,10)  && !isNaN(parseInt(num));
}

console.log ( isInteger(42));        // true
console.log ( isInteger("42"));      // true
console.log ( isInteger(4e2));       // true
console.log ( isInteger("4e2"));     // true
console.log ( isInteger(" 1 "));     // true
console.log ( isInteger(""));        // false
console.log ( isInteger("  "));      // false
console.log ( isInteger(42.1));      // false
console.log ( isInteger("1a"));      // false
console.log ( isInteger("4e2a"));    // false
console.log ( isInteger(null));      // false
console.log ( isInteger(undefined)); // false
console.log ( isInteger(NaN));       // false    
console.log ( isInteger(false));       // false
console.log ( isInteger(true));       // false
console.log ( isInteger(Infinity));       // false

1voto

Vasyl Gutnyk Punkte 4387

Ok habe Minus bekommen, weil ich mein Beispiel nicht beschrieben habe, also hier sind mehr Beispiele:):

Ich benutze reguläre Ausdrücke und die test-Methode:

var isInteger = /^[0-9]\d*$/;

isInteger.test(123); //true
isInteger.test('123'); // true
isInteger.test('sdf'); //false
isInteger.test('123sdf'); //false

// Wenn du den String-Wert vermeiden möchtest:
typeof testVal !== 'string' && isInteger.test(testValue);

1voto

DanielL Punkte 11

Für positive Ganzzahlen ohne Trennzeichen:

return ( data !== '' && data === data.replace(/\D/, '') );

Tests 1. wenn nicht leer und 2. wenn der Wert gleich dem Ergebnis eines Ersetzens eines Nicht-Zeichen in seinem Wert ist.

CodeJaeger.com

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.

Powered by:

X