小编典典

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

all

我正在制作一个实时更新用户位置和路径并将其显示在 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)` 语句从列表中获取最后一个位置并使用它来更新标记。如何从哈希中的数组中选择最后一个元素?


阅读 116

收藏
2022-03-03

共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/

2022-03-03