Javascript,找到第一个有效数字(值范围从87.352到0.0002432)

Javascript,找到第一个有效数字(值范围从87.352到0.0002432),javascript,gps,coordinates,Javascript,Gps,Coordinates,我用坐标创建了一个GPS系统 我使用此函数找到了最高和最低经纬度坐标: var maxLng = 0; var maxLat = 0; var minLng = 180; var minLat = 180; for(var i=0; i<coordinates.length; i++) { //get max coordinates (the +90 is to remove negative numbers) if (coordinates[i][0]+

我用坐标创建了一个GPS系统

我使用此函数找到了最高和最低经纬度坐标:

var maxLng = 0;
var maxLat = 0;
  var minLng = 180;
  var minLat = 180;
  for(var i=0; i<coordinates.length; i++)
  {

    //get max coordinates (the +90 is to remove negative numbers)
    if (coordinates[i][0]+90 > maxLat)
    {
      maxLat = coordinates[i][0] + 90;
    }

    if (coordinates[i][1]+90 > maxLng)
    {
      maxLng = coordinates[i][1]+ 90;
    }

    //get min coordinates
    if (coordinates[i][0]+90 < minLat)
    {
      minLat = coordinates[i][0] + 90;
    }

    if (coordinates[i][1]+90 < minLng)
    {
      minLng = coordinates[i][1] + 90;
    }
  }

  console.log(maxLat, maxLng,minLat, minLng);

  //calculate distance between max and min points
  var lngDistance = maxLng - minLng;
  var latDistance = maxLat - minLat;

  console.log(lngDistance, latDistance);
我想先找出第一个有效的数字,然后计算它离小数点有多远。我发现了一些关于使用正则表达式来实现这一点的帖子,但我以前从未使用过正则表达式

有人能给我一些指点吗


干杯。

这是一个有趣的发现

为你做了一个基本的功能,据我所知,它是有效的

function change(data){
    var ret=new Array();
    for(var i=0,len=data.length;i<len;i++){
        // make string from number, remove the dot
        var st=(''+data[i]).replace('.','');
        //remove leading zero's from string
        var no_zero=st.replace(/^0+/,'');
        //make value
        var val=parseInt(no_zero)/(Math.pow(10,no_zero.length-2));
        //calculate amount of steps
        var steps=Math.round(Math.log(Math.round(val/data[i]))/Math.log(10));

        //correction for floating point
        if(data[i]<0.01)steps--;

        ret.push([data[i],val,steps]);
    }
    return ret;
}
功能更改(数据){
var ret=新数组();

对于(var i=0,len=data.length;iRegex是将数字转换为2个有效数字的错误工具mmm好的,谢谢nhahtdh,你能想出任何工具来帮助我解决这个问题吗?被它困扰了好几个小时!你正在使用的示例的预期结果是什么?0 19 2 0 0 0 0?或0.00093 19 1.9 0.0013 0.23 0.000034?我已经编辑了这个问题,以示说明我想输出的是什么检查一下:在你使用它之后,我想你可以在
e
处拆分并处理输出。
function change(data){
    var ret=new Array();
    for(var i=0,len=data.length;i<len;i++){
        // make string from number, remove the dot
        var st=(''+data[i]).replace('.','');
        //remove leading zero's from string
        var no_zero=st.replace(/^0+/,'');
        //make value
        var val=parseInt(no_zero)/(Math.pow(10,no_zero.length-2));
        //calculate amount of steps
        var steps=Math.round(Math.log(Math.round(val/data[i]))/Math.log(10));

        //correction for floating point
        if(data[i]<0.01)steps--;

        ret.push([data[i],val,steps]);
    }
    return ret;
}