2013-04-16 13 views
1

我在JavaScript indexOf()方法中遇到了一些問題。我有一個數組...JavaScript indexOf()在數組中存在十進制值時給出-1的方法

 pointLatArray = new Array(); 

當我試圖讓我知道存在返回-1數組,我知道通常指示不被人發現的價值在一個變量的指標。當我的代碼如下..

 setlat = 52.6688391881732; 
     pointArrayIndex = pointLatArray.indexOf(setlat); 
     console.log(setlat + " " + pointLatArray[8] + " " + pointArrayIndex); 

我得到以下登錄到控制檯.....

 04-16 12:35:31.370: D/CordovaLog(7048): 52.6688391881732 52.6688391881732 -1 

然而,當我用pointLatArray更換setlat更改代碼[8]在下面的行....

 pointArrayIndex = pointLatArray.indexOf(pointLatArray[8]); 

下面得到記錄到控制檯在此它顯示8個正確的索引,而不是-1作爲預期.......

 04-16 12:46:17.230: D/CordovaLog(8497): 52.6688391881732 52.6688391881732 8 

是因爲我使用這樣一個長整數作爲變量setlat嗎?如果是這樣,或者由於某種原因,如果任何人可以提出修復建議,我將非常感激。

非常感謝

回答

2

嚴格比較雙數不是一個好主意。可能你在這裏觀察到的是四捨五入錯誤。儘管數字看起來與你相同,但它們可能會因一個小的epsylon而有所不同。

我看到的一個選擇是使用custom indexOf function使用epsylon比較(即允許數字相差很小的值,例如0.0000000000011e-12)。

+0

好吧,歡呼聲,所以我會選擇什麼,因爲我試圖獲得數組內的緯度值的索引? – hotshots

+0

抱歉,我只是在尋找正確的鏈接。看看我最後一句話。 –

+0

謝謝我現在看看那裏,看看我能從中得到些什麼。 – hotshots

相關問題