ホームページ > 記事 > ウェブフロントエンド > JavaScriptで値が整数かどうかを判断する方法
判定方法: 1. "value%1===0" ステートメントを使用する; 2. "Math.floor(value)===value" ステートメントを使用する; 3. "parseInt(value, 10) === value" ステートメント; 4. "(value|0)=== value" ステートメントを使用します; 5. "Number.isInteger(value)" ステートメントを使用します。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript は整数と浮動小数点数を区別しません。すべての数値は内部的に Java の double 型と同じ 64 ビット浮動小数点形式で表されます。ただし、配列のインデックス付けやビット演算などの実際の演算は 32 ビット整数に基づいています。では、整数型(Integer)かどうかはどうやって判断するのでしょうか?
方法 1. 剰余演算子を使用して、任意の整数が 1 で割り切れる、つまり剰余が 0 であることを決定します。このルールを使用して、整数かどうかを判断します。
function isInteger(obj) { return obj%1 === 0 } isInteger(3) // true isInteger(3.3) // false上記の出力から、この関数は非常に便利であることがわかりますが、文字列や特定の特殊な値は使用できません。
isInteger('') // true isInteger('3') // true isInteger(true) // true isInteger([]) // true空の文字列、文字列型の数値、ブール値の場合true および empty 配列はすべて true を返しましたが、これは実際には受け入れられません。これらの型の内部変換の詳細に興味がある場合は、JavaScript の奇妙な False Values したがって、typeof# を追加するなど、最初にオブジェクトが数値であるかどうかを判断する必要があります。 ##
function isInteger(obj) { return typeof obj === 'number' && obj%1 === 0 } isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
さて、こんな感じで比較的完璧です。
方法 2. Math.floor を使用して、整数が四捨五入後もそれ自体と等しいかどうかを判断します。以下に示す Math.floor の例では、この機能を使用して、文字列 true、[] を直接マスクし、コードの量は前の関数よりも少なくなります。parseInt から判断すると、メソッド 3 は非常に優れています。function isInteger(obj) {
return Math.floor(obj) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
ですが、欠点もあります。
function isInteger(obj) { return parseInt(obj, 10) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
実際には false が返されるため、不合理です。 。その理由は、parseInt が整数を解析する前に最初の引数を強制的に文字列に解析するためです。数値を整数に変換するこの方法は、良い選択ではありません。
方法 4. ビット演算による判定isInteger(1000000000000000000000) // false
この関数は非常に優れており、非常に効率的です。しかし、欠点があります。上で述べたように、ビット演算は 32 ビット以内の数値のみを処理でき、
function isInteger(obj) { return (obj | 0) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
のような 32 ビットを超える数値については何もできません。もちろん、ほとんどの場合は使用しません。このような大きな数です。
方法 5. ES6 は Number.isInteger を提供しますisInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
現在、最新の Firefox と Chrome はすでにこれをサポートしています。
注: これら 5 つの方法にはそれぞれ長所と短所があるため、慎重に比較して、使用するのに最適な方法を選択してください。
[推奨学習:
JavaScript 上級チュートリアル]
以上がJavaScriptで値が整数かどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。