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.

Contact Invent Web Design

01924 262704

Please enter your details below and we will call you back.