[アルゴリズム]自閉症JavaScriptで決まる整数であるか否かの方法(5種類)

オペレータの判断剰余を使用してモード

アイデア:任意の整数1を使用することは、整数か否かを判断するためのルールによって余り0に特異的である、分割あろう。

function isInteger(obj) {
 return obj%1 === 0
}
isInteger(5) // true
isInteger(5.72) // false 

それ以外の場合は、空の文字列、文字列型番号、ブール真、空のために「不正行為」され、検査規則を改善する必要性について] [使用するが、一部の特殊な値と文字列のために非常に簡単に、この機能の出力の上に見ることができます配列は真、彼らはタイプにインストールされているので、次にモジュロ時間は、次のように空の文字列は、空の配列は0に変換され戻され、それが真に変わります

isInteger('') // true
isInteger('5') // true
isInteger(true) // true
isInteger([]) // true

だから我々は比較し、最適化は、以下のためにどのような種類を決定する前に:

function isInteger(obj) {
 return typeof obj === 'number' && obj%1 === 0
}
isInteger('') // false
isInteger('5') // false
isInteger(true) // false
isInteger([]) // false

恐らくMath.round、Math.ceil、Math.floor解析を用いて、第2の方法は、

イデア:に等しいか、または独自の整数丸めた後。それが整数であるかどうかを決定するためにこの機能を使用しMath.floor、以下のように、一例:

unction isInteger(obj) {
 return Math.floor(obj) === obj
}
isInteger(5) // true
isInteger(5.72) // false
isInteger('') // false
isInteger('5') // false
isInteger(true) // false
isInteger([]) // false

Math.floor自動の方法は、同じトークンが使用して、デジタル値にパラメータに進みMath.ceil、切り上げMath.round丸め

parseInt()解析することにより、三つの方法、

アイデア:使用のparseInt()小数点変換機能

function isInteger(obj) {
 return parseInt(obj, 10) === obj
}
isInteger(5) // true
isInteger(5.72) // false
isInteger('') // false
isInteger('5.72') // false
isInteger(true) // false
isInteger([]) // false

しかし、検出の検出範囲の数よりも多くのための意志ではない、統一されたデジタル検出の最初の桁に戻ります

parseInt(1000000000000000000000) // 1  false
parseInt(412300213123400000000.21312) // 4  false

4つの方法で、ビット操作による「|」裁判官

思考:ビット単位のOR演算子は|二項演算子です。その機能は32ビットバイナリ、それぞれ対応する相またはバイナリに変換する計算に関与している二つの数字の後に。限り、対応する2つのバイナリビットが1であるように、それは結果ビットです。変換後したがって、この機能を使用する、任意の数および0または非数値タイプ同様の理由から、それ自身を返すはビットであるか、または

function isInteger(obj) {
 return (obj | 0) === obj
}
isInteger(5) // true
isInteger(5.72) // false
isInteger('') // false
isInteger('5') // false
isInteger(true) // false
isInteger([]) // false

OR演算ビットに、効率よりもMath.floorparseInt高い、実用的な方法演算子のビットは→見ることができますJavascriptが利用シナリオ+ + +パッケージ性能比較でビット演算子

ウェイ5、ES6はNumber.isIntegerを提供しました

アイデア:これは、APIのメソッドの数であり、パラメータの特定の参照→整数与えられたか否かを決定するために使用されるNumber.isInteger

Number.isInteger(5) // true
Number.isInteger(5.72) // false
Number.isInteger('') // false
Number.isInteger('5') // false
Number.isInteger(true) // false
Number.isInteger([]) // false

ほとんどのブラウザとの互換性がサポートを実装している、IEはサポートしていません。
ここに画像を挿入説明

エピローグ

これらは、整数型かどうかを判断するために5つの方法です、この5つの方法は、長所と短所を持って、我々は慎重に比較して、最高の使用を選択することができます。

公開された134元の記事 ウォン称賛80 ビュー30000 +

おすすめ

転載: blog.csdn.net/Umbrella_Um/article/details/103441512