Testing if a value is an integer in Javascript
I decided to post this article after doing a Google search for "Javascript is_int()" and "Javascript integer test" on Google.
I got plenty of results back, but each result that I looked at contained a function which wouldn't work properly
Let me explain...
Javascript is_int() function example 1
Some sites proposed a solution which involved doing a pattern matching each for a decimal point in the variable. Something along the lines of this:
function is_int(value){
for (i = 0 ; i < value.length ; i++) {
if ((value.charAt(i) < '0') || (value.charAt(i) > '9')) return false
}
return true;
}
Why this won't work
If I enter 1.00 or 2.00 as my variable, the function will return false, even though the number I entered is in fact an integer.
FAIL.
Javascript is_int() function example 2
Some solutions propose doing a parseInt() on the value, and returning false if this is NaN:
function is_int(value){
return !isNaN(parseInt(value * 1)
}
Why this won't work
Whilst this will work with standard floats and integers, it won't work with string values (for example, form submission data).
FAIL.
Finally: a Javascript is_int() function which WORKS:
If the value of a variable is an integer, then the numeric value of it's parseFloat() and parseInt() equivalents will be the same, so:
function is_int(value){
if((parseFloat(value) == parseInt(value)) && !isNaN(parseInt(value))){
return true;
} else {
return false;
}
}
There you go. If you can find fault with me on this, let me know.
Facebook
Digg
Delicious
Reddit
StumbleUpon
Twitter