2017-04-14 7 views
1

文字列を数値に変換して、整数以外の任意の変形のみがエラーを生成するようにすることができます。それが正常に動作しないためJavaScript内の整数(および*のみ*整数)を解析します。

func('17') = 17; 
func('17.25') = NaN 
func(' 17') = NaN 
func('17test') = NaN 
func('') = NaN 
func('1e2') = NaN 
func('0x12') = NaN 

のparseIntは、動作しません。

ParseInt('17') = 17; 
ParseInt('17.25') = 17 // incorrect 
ParseInt(' 17') = NaN 
ParseInt('17test') = 17 // incorrect 
ParseInt('') = NaN 
ParseInt('1e2') = 1 // incorrect 

そして、最も重要なのは:機能がIE、Chrome、その他のブラウザで機能するためです。

あなたは非数字を含むすべての文字列拒否し regular expressionと三項演算子を使用することができます
+0

数( )あなたが近くになるが、小数点以下の桁を破棄したいのですか、本当にNaNとして拒否したいのですか? – Christopher

答えて

4

function intOrNaN (x) { 
 
    return /^\d+$/.test(x) ? +x : NaN 
 
} 
 

 
console.log([ 
 
    '17', //=> 17 
 
    '17.25', //=> NaN 
 
    ' 17', //=> NaN 
 
    '17test', //=> NaN 
 
    '', //=> NaN 
 
    '1e2', //=> NaN 
 
    '0x12' //=> NaN 
 
].map(intOrNaN))

+2

あなたはそれに私を打つ:D! –

1

これは、すべてのテストを満足させる:

function func (str) { 
    var int = parseInt(str, 10); 
    return str == str.trim() && str == int ? int : NaN 
} 
関連する問題