这个问题在这里已经有答案了:
获取数组中的最后一项
(55个答案)
(55个答案)
四年前关闭的
我正在制作一个应用程序,实时更新用户的位置和路径,并将其显示在谷歌地图上。我的功能允许使用每秒更新的对象同时跟踪多个用户
现在,当用户在Android应用程序中按下一个按钮时,坐标会被发送到一个数据库,每次位置改变时,地图上的一个标记就会被更新(并形成一条多段线)
因为我有多个用户,所以我发送一个唯一的随机生成的字母数字字符串,以便为每个用户显示一个单独的路径。当JS从数据库中提取这些数据时,它会检查用户是否存在,如果不存在,它会创建一个新的键,值为列表。它看起来像这样:
loc={f096012e-2497-485d-8adb-7ec0b9352c52:[new google.maps.LatLng(39,-86),
新的google.maps.LatLng(38,-87),
新google.maps.LatLng(37,-88)],
44ed0662-1a9e-4c0e-9920-106258dcc3e7:[新的google.maps.LatLng(40,-83),
新的google.maps.LatLng(41,-82),
新的google.maps.LatLng(42,-81)]}
我正在做的是存储一个坐标列表作为键的值,键是用户的ID。每次通过添加到列表中更改位置时,我的程序都会不断更新该列表(这可以正常工作)
我需要做的是每次位置更改时更新标记的位置。我想通过选择数组中的最后一个项来实现这一点,因为这将是最后一个已知的位置。现在,每次更改位置时,都会向地图添加一个新标记(示例中的每个点都会在该位置显示一个标记),因此标记将继续添加
每次位置更新时,我都会使用“for(x in loc)”语句从列表中获取最后一个位置,并使用它更新标记。如何从散列中的数组中选择最后一个元素
如何访问数组的最后一个元素
看起来是这样的:
var my_array=/*此处的某些数组*/;
var last_element=my_array[my_array.length-1];
在您的案例中,如下所示:
var array1=loc['f096012e-2497-485d-8adb-7ec0b9352c52'];
var last_element=array1[array1.length-1];
或者,在较长的版本中,不创建新变量:
loc['f096012e-2497-485d-8adb-7ec0b9352c52'][loc['f096012e-2497-485d-8adb-7ec0b9352c52']长度为-1];
如何添加使其更简单的方法
如果您喜欢创建函数/快捷方式来完成这些任务,请输入以下代码:
如果(!Array.prototype.last){
Array.prototype.last=函数(){
返回此[this.length-1];
};
};
将允许您通过调用数组的last()方法获取数组的最后一个元素,例如:
loc['f096012e-2497-485d-8adb-7ec0b9352c52'].last();
您可以在此处检查它是否工作:http://jsfiddle.net/D4NRN/