整数型かどうかを判断する 5 つの js の方法_javascript スキル

WBOY
リリース: 2016-05-16 15:28:06
オリジナル
1255 人が閲覧しました

この記事では、整数型 (Integer) を決定する方法について説明します。JavaScript では、すべての数値が内部的には Java の double 型と同じ 64 ビット浮動小数点形式で表現されます。ただし、配列のインデックス付けやビット演算などの実際の演算は 32 ビット整数に基づいています。
方法 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、および空の配列に対しては True が返されますが、これは実際には受け入れられません。これらの型の内部変換の詳細に興味がある場合は、JavaScript の奇妙な false 値
を参照してください。 したがって、typeof
を追加するなど、最初にオブジェクトが数値かどうかを判断する必要があります。

function isInteger(obj) {
 return typeof obj === 'number' && obj%1 === 0
}
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
ログイン後にコピー

そうですね、これはより完璧です。
方法 2、Math.round、Math.ceil、Math.floor を使用して判断します
整数は四捨五入後もそれ自体と等しくなります。次のように、この機能を使用して整数かどうかを判断します (Math.floor の例)。

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
ログイン後にコピー

これは文字列、true、および [] を直接ブロックし、コードの量は前の関数よりも少なくなります。
方法 3、parseInt で判定

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
ログイン後にコピー

非常に良いですが、欠点があります

isInteger(1000000000000000000000) // false
ログイン後にコピー

実際には false が返されましたが、これは不合理です。その理由は、parseInt が整数を解析する前に最初の引数を強制的に文字列に解析するためです。数値を整数に変換するこの方法は、良い選択ではありません。
方法 4: ビット演算を通じて決定する

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 ビット以内の数値しか処理できず、
などの 32 ビットを超える数値については何もできません。

コードをコピー コードは次のとおりです:
isInteger(Math.pow(2, 32)) // 数値32 桁を超える場合は false が返されます

もちろん、ほとんどの場合、それほど大きな数値は使用しません。
方法 5. ES6 は Number.isInteger
を提供します

Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false
ログイン後にコピー

現在、最新の Firefox と Chrome はすでにサポートしています。

上記は整数型であるかどうかを判断する 5 つの方法です。これらの 5 つの方法にはそれぞれ長所と短所があり、慎重に比較して使用するのが最適です。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート