2016-05-04 11 views
1

有効範囲を-180から180の間で比較したいと思います。 numberが-180より小さく180より大きい場合、エラーが表示されるはずです。JavaScriptの負の数値を比較するには

私は、このためのコードの下に書かれている -

if((markerPoint[0] && parseInt(markerPoint[0],10) < -180 || parseInt(markerPoint[0],10) > 180)) { 
     this.latlngError.push("Invalid coordinates"); 
    } else { 
     this.isLanLngValid = true; 
    } 

しかし、これは間違った比較を返しています。

+2

また、 '0'は' falsey'値です – Rayon

答えて

0

代わりMath.abs()を使用することができます。

if (markerPoint[0] && Math.abs(parseInt(markerPoint[0],10)) > 180) 

編集:@TedHoppで述べたように、あなたの現在のコードで見える問題は、演算子の優先順位のようです。 &&higher precedenceよりも||です。 Math.abs()を使用すると問題が回避されます。

これで問題が解決しない場合は、さらに多くのコードをデバッグ用に用意する必要があります。

0

Iは-180と180の間の数について

180 -180間

に検証範囲を比較する数が180、次いで-180より大きい未満であるので、比較を変更しなければなりません。

if(markerPoint[0] && parseInt(markerPoint[0],10) > -180 && parseInt(markerPoint[0],10) < 180) { 
0

それが確実に動作するコードの下に置き換え、このJsFiddle

var answer = prompt("type a number"); 
func(); 
function func() { 
    if (answer>=-180&&answer<=180) { 
    alert("Yes! We made it!"); 
    } else { 
    answer = prompt("Invalid try agian"); 
    func(); 
    } 
} 
0

を試してみてください。
IF(markerPoint [0]> = - 180 & & markerPoint [0] = 180 <)をコードと

0

一つの問題は、JavaScriptの&&||より高い優先順位を有することです。 (表hereを参照してください。)それは括弧たかのようにこのように、ロジックが評価されています

if (
    (markerPoint[0] && parseInt(markerPoint[0],10) < -180) 
    || 
    parseInt(markerPoint[0],10) > 180) 
{ 

あなたはそれを変更するために括弧を使用することができます。

if(markerPoint[0] && (parseInt(markerPoint[0],10) < -180 || parseInt(markerPoint[0],10) > 180)) { 

markerPoint[0]である場合、ifテストに合格します真理値であり、それが範囲外の何かに評価されるならば[-180,180]。

関連する問題