1

我在使用 JavaScript indexOf() 方法时遇到了一些问题。我有一个数组...

      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

但是,当我通过在以下行中将 setlat 替换为 pointLatArray[8] 来更改代码时......

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

以下内容被记录到控制台,它显示正确的索引 8 而不是预期的 -1.......

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

是因为我使用了这么长的十进制集作为变量 setlat 吗?如果是这样,或者出于任何原因,如果有人可以提出修复建议,我将非常感激。

非常感谢

4

1 回答 1

2

对双数进行严格比较不是一个好主意。您在这里观察到的可能是舍入误差。尽管数字对您来说似乎相同,但它们可能会相差一个小epsylon。

我看到的一种选择是使用使用epsylon比较的自定义indexOf函数(即允许数字相差一个很小的值。例如0.0000000000011e-12)。

于 2013-04-16T11:52:25.930 回答