【问题标题】:Modify array with jQuery to get sequenced indexes使用 jQuery 修改数组以获取有序索引
【发布时间】:2011-11-24 07:08:35
【问题描述】:

这个 javascript 数组包含我发送到 Google Maps API 以在地图中绘制路径的坐标。 有时坐标[0]为空,因为它取决于先前可能存在或不存在的路线(使用 Google 地图)。

这是我的代码:

coordinates = [];

(在此之间我寻找以前的路径(坐标[0])。在这种情况下,我们假设它为空。所以我们有这些值:

coordinates[1] = '50,20'; //route 1
coordinates[2] = '10,18'; //route 2
coordinates[3] = '27,34'; //route 3

之后,我在地图中画出这样的路径:

travel_path = new google.maps.Polyline({
  path: coordinates
});
travel_path.setMap(map);

问题:当有没有坐标[0](当没有前一段行进路径时发生)时,.Polyline 方法会抛出错误,因为它需要接收一个数组从 0 开始的有序索引。

问题:如何将原始数组转换为此(比较索引):

coordinates[0] = '50,20'; //route 1
coordinates[1] = '10,18'; //route 2
coordinates[2] = '27,34'; //route 3

【问题讨论】:

    标签: jquery arrays google-maps-api-3 indexing


    【解决方案1】:

    coordinates.shift() 从数组中删除第一个元素。

    var coordinates = [];
    //coordinates[0] = undefined;
    coordinates[1] = '50,20'; //route 1
    coordinates[2] = '10,18'; //route 2
    coordinates[3] = '27,34'; //route 3
    coordinates.shift();
    

    coordinates.shift() 导致这种情况发生:

    coordinates[0] = coordinates[1];
    coordinates[1] = coordinates[2];
    coordinates[2] = coordinates[3];
    //coordinates[3] is removed.
    

    【讨论】:

      【解决方案2】:

      就像 rob 说的,使用 shift(),你可以先检查一下坐标 [0] 是否未定义。

      if( !coordinates[0] )
          coordinates.shift(); 
      

      【讨论】:

      • if(typeof coordinates[0]=='undefined') coordinates.shift();
      • !coordinates[0] 做同样的事情,而且更短:-P
      • 你没有抓住重点。它不做同样的事情。那么坐标[0]=0呢?
      • 不会有坐标0,因为它是一个字符串!事实上它是 x 和 y 坐标,所以它不会是 0。它必须是一个字符串才能同时获得坐标 x 和 y。
      【解决方案3】:

      您可以使用slice

      coordinates.slice(1);
      

      See it in action.

      【讨论】:

        【解决方案4】:

        用途:

        travel_path = new google.maps.Polyline({
          path:(function(){
                var arrayCoord=[],k=0;
                for(var key in coordinates){
                    arrayCoord[k]=coordinates[key];
                    ++k;
                }
                return arrayCoord;
          })()
        });
        travel_path.setMap(map);
        

        【讨论】:

          猜你喜欢
          • 2019-03-26
          • 1970-01-01
          • 1970-01-01
          • 2011-10-11
          • 2017-12-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-19
          相关资源
          最近更新 更多