JavaScript indexOf() 方法在数组中存在十进制值时给出 -1

标签 javascript

我在使用 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 吗?如果是这样,或者出于任何原因,如果有人可以提出修复建议,我将非常感激。

非常感谢

最佳答案

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

我看到的一个选项是使用 custom indexOf function使用 epsylon 比较(即允许数字相差一个小值。例如 0.0000000000011e-12)。

关于JavaScript indexOf() 方法在数组中存在十进制值时给出 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16036273/

相关文章:

javascript - 如何使用javascript访问JSON格式的数据

javascript - 如何使用javascript获取html元素的子索引

javascript - 如何动态访问数组中的索引?

javascript - 如何更新或删除 ngrx 实体中的嵌套对象?

javascript - 在 ASP.NET MVC3 中使用 JavaScriptSerializer 转义引号

javascript - 如何检测图像何时完成在浏览器中的渲染(即绘制)?

javascript - 使用 JSON 响应的数据表

javascript - 单击另一个div后如何在另一个div上显示div?

javascript - 最新的 EmberJS 无法识别最新的 Handlebars

javascript - 如何将json与typescript接口(interface)映射?