JavaScript Try Parse int

JavaScript fornece isNaN
, que retorna um bool se o valor é um int ou não. Mas essa funcionalidade pode ser incluída em uma função útil que, na verdade, retornará um valor numérico de um objeto, dado o radical especificado. Se o valor não for int, ele retornará um valor padrão.

as entradas são as seguintes:

val : o objeto a tentar analisar como um int

default_val : o valor a retornar se este não for um int

raiz : a base do número a ser retornado (ex: 2 para binário, 10 para base 10 que estamos acostumados a contar)

var int_try_parse = function(val, default_val, radix)
{
try
{
radix
= radix || 10;
default_val
= default_val || 0;

//validate this object is not null
if (val != null)
{
//convert to string
var that = JSON.stringify(val);
if (that.length > 0)
{
//check to see the string is not NaN, if not parse
if (!isNaN(that))
return parseInt(that, radix);
}
}
}
catch (err)
{
console
.log(err);
}
//this is not a number
return default_val;
}

alguns casos de teste:

Binário

int_try_parse(1010, 0, 2)
=>10


int_try_parse
(10, 0, 2)
=>2

Base 10

int_try_parse(1010, 0, 10)
=>1010

int_try_parse
(10, 0, 10)
=>10

objetos inválidos

int_try_parse([1010], 0, 10)
=>0

int_try_parse
({val:1010}, 0, 10)
=>0

int_try_parse
({val:1010}, -50, 10)
=>-50