使用jQuery修改数组以获取有序索引

时间:2011-09-24 15:42:13

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

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

这是我的代码:

coordinates = [];

(在这里我寻找前一个路径(coordinates [0])。在这种情况下,我们假设它是null。所以我们有这些值:

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

4 个答案:

答案 0 :(得分:2)

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.

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您可以使用slice

来完成此操作
coordinates.slice(1);

<强> See it in action

答案 3 :(得分:0)

使用:

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);