'How do I convert a string to an int in Javascript?

how do I convert a string to int in JS, while properly handling error cases?

I want NaN returned when the argument is not really an integer quanityt:

  • blank string should return NaN (not 0)
  • mixed strings (e.g. "3b") should return NaN (not 3)


Solution 1:[1]

http://www.w3schools.com/jsref/jsref_parseInt.asp

Solution 2:[2]

function stringToInt(str) {
  var num = parseInt(str);
  if (num == str)
    return num;
  return NaN;
}

Examples

stringToInt("")
NaN

stringToInt("3")
3

stringToInt("3x")
Nan

Solution 3:[3]

var intval = /^\d+$/.test( strval ) ? parseInt( strval ) : NaN;

Solution 4:[4]

You don't need much- if s is a string:

s%1 will return 0 if s is an integer.

It will return a non-zero number if s is a non-integer number,

and NaN if s is not a number at all.

function isInt(s){
    return (s%1===0)? Number(s):NaN;
}

But although the number returned is an integer, to javascript it is still just a number.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Brian L
Solution 2 Jim Blackler
Solution 3 meouw
Solution 4