2015-01-16 30 views
2

基本上我试图比较传递的坐标是否与数组列表中的项匹配。所以我有一个名为busList数组与数组项格式如下:JavaScript减去两个变量之间的计算

27794.27939,43930.90485 

然后我试图循环数组通来比较,我传递的坐标,我传入的坐标是两个变量: coordx和coordy。

for(var i = 0; i < busList.length; i++){ 
    var parts = busList[i].split(","); 
    buslocX = parts[0]; 
    buslocY = parts[1]; 

    if((coordx - buslocX < 0.0050) && (coordy - buslocY < 0.0050)){ 
     console.log(coordx - buslocX); 
    } 
} 

如果coordx - 数组中的x坐标小于0.0050并且和y一样,那么我将执行其他操作。有了这些代码,我试图打印减号的结果,但我没有在控制台中得到任何东西。

任何想法?提前致谢。

简而言之,我试着检查coordx,coordy是否与数组内的任何项匹配。但是,coordx会有小小的差异,例如0.0050,与数组项目协调一致。例如,我得到了阵列的坐标表:

27794.27939,43930.90485 
27539.43390,43422.26042 

我传递的coordx是27794.27920和coordy为43930.90480。因为coordx和coordy都比第一项小于0.0050,所以我会执行其他操作。

回答

2

您是否尝试将buslocXbuslocY转换为float类型?

buslocX = parseFloat(parts[0]); 
buslocY = parseFloat(parts[1]); 

split方法转换字符串的阵列和在计算中的那种情况下bahaviour可以是出乎意料的。

+0

你能帮我查一下我进一步解释一部分试试?因为我认为我的逻辑从一开始就是错误的。 – hyperfkcb

+0

@Denise它适合我。 http://jsfiddle.net/s1xky4yu/1/在控制台我得到'-0.0001899999988381751' – antyrat

0

使用

var parts = busList[i].split("."); 

代替

var parts = busList[i].split(","); 
+0

busList坐标在进一步解释部分。你能帮我检查一下吗?因为我认为我的逻辑错了。 – hyperfkcb