JavaScriptで数値が整数かどうかを判定する際に便利なのが`Number.isInteger()`メソッドです。このメソッドの使い方と特徴について、実践的なコード例を交えて解説します。

Number.isInteger()の基本的な使い方

`Number.isInteger()`は引数として与えられた値が整数かどうかを判定し、真偽値(true/false)を返します。

Number.isInteger(5);      // true
Number.isInteger(5.0);    // true
Number.isInteger(5.1);    // false
Number.isInteger(-5);     // true
Number.isInteger('5');    // false

戻り値について

  • 整数の場合:`true`を返します
  • 小数の場合:`false`を返します
  • 数値以外の場合:`false`を返します

特徴的な判定例

// 整数として扱われるケース
Number.isInteger(0);        // true
Number.isInteger(-0);       // true
Number.isInteger(1000000);  // true

// 整数として扱われないケース
Number.isInteger(null);     // false
Number.isInteger(undefined);// false
Number.isInteger('123');    // false
Number.isInteger(NaN);      // false
Number.isInteger(Infinity); // false

よくある使用シーン

1. フォームの入力値チェック

function validateAge(age) {
    if (!Number.isInteger(age)) {
        return '年齢は整数で入力してください';
    }
    return '正しい入力です';
}

2. 配列の要素チェック

const numbers = [1, 2.5, 3, 4.7, 5];
const onlyIntegers = numbers.filter(num => Number.isInteger(num));
// 結果: [1, 3, 5]

注意点

1. 文字列型の数値は常に`false`を返します

Number.isInteger('5');     // false
Number.isInteger('5.0');   // false

2. 浮動小数点数の計算結果には注意が必要です

Number.isInteger(0.1 + 0.2);  // false(0.30000000000000004となるため)

代替手段

古いブラウザでの互換性が必要な場合は、以下のようなポリフィルを使用できます:

if (!Number.isInteger) {
    Number.isInteger = function(value) {
        return typeof value === 'number' && 
               isFinite(value) && 
               Math.floor(value) === value;
    };
}

`Number.isInteger()`は、JavaScriptで数値の整数判定を行う際の標準的な方法として広く使用されています。シンプルで直感的なAPIを提供し、数値処理において重要な役割を果たします。

なお、極めて大きな数値や小数点以下の桁数が多い数値を扱う場合は、追加の検証が必要になる場合があります。そのような場合は、アプリケーションの要件に応じて適切な判定ロジックを実装することをお勧めします。