选择 JavaScript 数组中的最后一个元素

我正在制作一个应用程序,可以实时更新用户的位置和路径,并将其显示在Google地图上。我的功能允许使用对象同时跟踪多个用户,该对象每秒更新一次。

现在,当用户在Android应用程序中按下按钮时,坐标被发送到数据库,每次位置更改时,都会在地图上更新一个标记(并形成折线)。

由于我有多个用户,因此我发送了一个唯一且随机生成的字母数字字符串,以便我可以为每个用户显示单独的路径。当 JS 从数据库拉取此数据时,它会检查用户是否存在,如果不存在,则会创建一个新键,其值为列表。它看起来像这样:

loc = {f096012e-2497-485d-8adb-7ec0b9352c52: [new google.maps.LatLng(39, -86),
                                              new google.maps.LatLng(38, -87),
                                              new google.maps.LatLng(37, -88)],
       44ed0662-1a9e-4c0e-9920-106258dcc3e7: [new google.maps.LatLng(40, -83),
                                              new google.maps.LatLng(41, -82),
                                              new google.maps.LatLng(42, -81)]}

我正在做的是存储一个坐标列表作为键的值,这是用户的ID。我的程序每次通过添加到列表中更改位置时都会不断更新此列表(这工作正常)。

我需要做的是每次位置更改时更新标记的位置。我想通过选择数组中的最后一项来执行此操作,因为那将是最后一个已知位置。现在,每次更改位置时,都会向地图添加一个新标记(示例中的每个点都会在该位置显示一个标记),以便继续添加标记。

每次位置更新时,我都会使用“for (x in loc)”语句从列表中抓取最后一个位置,并使用它来更新标记。如何从哈希中的数组中选择最后一个元素?


答案 1

如何访问数组的最后一个元素

它看起来像这样:

var my_array = /* some array here */;
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'].length - 1];

如何添加使其更简单的方法

如果您是创建函数/快捷方式以完成此类任务的粉丝,请编写以下代码:

if (!Array.prototype.last){
    Array.prototype.last = function(){
        return this[this.length - 1];
    };
};

将允许您通过调用数组的方法获取数组的最后一个元素,例如:last()

loc['f096012e-2497-485d-8adb-7ec0b9352c52'].last();

您可以在此处检查它是否有效:http://jsfiddle.net/D4NRN/


答案 2

使用方法:slice()

my_array.slice(-1)[0]