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 don't always work as intended, either because the logic was flawed, or because it won't work with variables which are typed as a string, such as form input values.
Let me explain...
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;
}
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.
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))
}
Whilst this will work with standard integers, it will also return true for floats, and it won't work with data typed as string (for example, form submission data).
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(value)){
return true;
} else {
return false;
}
}
NOTE: the above function uses WEAK VARIABLE TYPING - if you need to check is_int() using strong variable typing, you will need to use a different approach.
© 2024 Invent Partners Ltd | Supporters of FdA Web Design, Wakefield