首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >选择JavaScript数组中的最后一个元素

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

Stack Overflow用户
提问于 2012-01-29 10:11:44
回答 10查看 1.2M关注 0票数 702

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

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

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

代码语言:javascript
复制
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)’语句来获取列表中的最后一个位置,并使用它来更新标记。如何从散列中的数组中选择最后一个元素?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-01-29 10:14:04

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

看起来是这样的:

代码语言:javascript
复制
var my_array = /* some array here */;
var last_element = my_array[my_array.length - 1];

在你的例子中是这样的:

代码语言:javascript
复制
var array1 = loc['f096012e-2497-485d-8adb-7ec0b9352c52'];
var last_element = array1[array1.length - 1];

或者,在更长的版本中,不创建新的变量:

代码语言:javascript
复制
loc['f096012e-2497-485d-8adb-7ec0b9352c52'][loc['f096012e-2497-485d-8adb-7ec0b9352c52'].length - 1];

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

如果您热衷于创建函数/快捷方式来完成这些任务,请使用以下代码:

代码语言:javascript
复制
if (!Array.prototype.last){
    Array.prototype.last = function(){
        return this[this.length - 1];
    };
};

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

代码语言:javascript
复制
loc['f096012e-2497-485d-8adb-7ec0b9352c52'].last();

你可以在这里检查它是否正常工作:http://jsfiddle.net/D4NRN/

票数 1K
EN

Stack Overflow用户

发布于 2014-01-07 03:38:08

使用slice()方法:

代码语言:javascript
复制
my_array.slice(-1)[0]
票数 624
EN

Stack Overflow用户

发布于 2015-10-03 06:42:54

代码语言:javascript
复制
var arr = [1, 2, 3];
arr.slice(-1).pop(); // return 3 and arr = [1, 2, 3]

如果数组为空,这将返回undefined,这不会更改数组的值。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9050345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档