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