menu

Web制作のTipsとかアレコレ。

[JS]整数かどうかを判別する関数(isInteger()的なやつ)

2016.02.10

Javascriptの型の扱いにイマイチ馴染んでないなぁと今さら実感した今日このごろ。

Integerとfloatの判別をするために、以下のような関数を作って使っていました。

function isInteger( x ) {
    return Math.round(x) === x;
}

引数で渡された値に対し、四捨五入前後で完全に一致するかどうかで判別をするというもの。
trueまたはfalseが返ります。

ところが、これがうまく機能しないケースにぶち当たり、理由が判別しました。

現在製作中のフォームで、inputフィールドをtype=”number”から”text”に変更したのですが、その結果、引数として関数に渡すvalueがstring型になってしまっていたと、まあそういうわけでした。
なので、半角整数を入力しても絶対にtrueが返ってこない(笑)

ですので、上記の関数を、以下の通り改変。

function isInteger( x ) {
    x = parseFloat( x );
    return Math.round(x) === x;
}

当然ですが、parseIntではなくparseFloatでございます。
これでうまくいきました。

以上。

Comments

please leave your comment...

▲ Page Top