JavaScript indexOf()方法在数组中存在十进制值时给出-1
JavaScript indexOf() Method giving -1 when decimal value is present in array
我在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的差异。
我看到的一个选项是使用自定义indexOf函数使用epsylon比较(即允许数字有一个小的数值差异。例如0.000000000001
或1e-12
)。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 用于检查数组中是否存在元素的javascript自定义方法
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在将事件处理程序添加到不存在的类
- 是否存在React Native“;WEB代码安全防护”;
- 一个密码测试程序,如果存在空格,它会提醒用户
- 验证会话中是否存在对象's数组
- javascript如果图像不存在don't加载它
- 如何查找值是否存在于二叉树中
- IE9的HTML5 Canvas getImageData()函数存在问题
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- CORS-服务器端cookie没有保存在chrome浏览器上
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- JavaScript indexOf()方法在数组中存在十进制值时给出-1