相关疑难解决方法(0)

选择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)]}
Run Code Online (Sandbox Code Playgroud)

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

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

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

javascript arrays google-maps google-maps-markers

497
推荐指数
13
解决办法
82万
查看次数

为什么JavaScript没有最后一种方法?

JavaScript Array类没有提供检索数组最后一个元素的最后一个方法,这有点奇怪.我知道解决方案很简单(Ar [Ar.length-1]),但是,这种情况经常被使用.

任何严重的原因,为什么没有纳入呢?

javascript

124
推荐指数
6
解决办法
10万
查看次数

为什么扩展本机对象是一种不好的做法?

每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?

TJ Holowaychukshould.js为例.他增加了一个简单的getterObject,一切工作正常(来源).

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return new Assertion(Object(this).valueOf());
  },
  configurable: true
});
Run Code Online (Sandbox Code Playgroud)

这真的很有道理.例如,可以扩展Array.

Array.defineProperty(Array.prototype, "remove", {
  set: function(){},
  get: function(){
    return removeArrayElement.bind(this);
  }
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)

是否有任何反对扩展本机类型的论据?

javascript prototype prototypal-inheritance

121
推荐指数
7
解决办法
3万
查看次数

方程(表达式)解析器具有优先权?

我使用简单的堆栈算法开发了一个方程解析器,它将处理二进制(+, - ,|,&,*,/等)运算符,一元(!)运算符和括号.

但是,使用这种方法会让我拥有相同优先级的所有内容 - 无论操作符如何,都会从左到右进行评估,尽管可以使用括号强制执行优先级.

所以现在"1 + 11*5"会返回60,而不是人们所期望的56.

虽然这适用于当前项目,但我希望有一个通用例程,我可以用于以后的项目.

编辑清晰:

解析具有优先级的方程的好算法是什么?

我对一些简单的实现感兴趣,并且理解我可以自己编写代码来避免使用可用代码的许可问题.

语法:

我不明白语法问题 - 我是手写的.这很简单,我认为不需要YACC或Bison.我只需要用诸如"2 + 3*(42/13)"之类的方程计算字符串.

语言:

我在C中这样做,但我对算法感兴趣,而不是语言特定的解决方案.C足够低,如果需要,很容易转换成另一种语言.

代码示例

我发布了上面讨论的简单表达式解析器测试代码.项目要求发生了变化,因此我从不需要优化性能或空间代码,因为它没有包含在项目中.它是原始的详细形式,应该易于理解.如果我在运算符优先级方面做了更多的事情,我可能会选择宏hack,因为它简单地匹配程序的其余部分.但是,如果我在一个真实的项目中使用它,我将寻求一个更紧凑/更快速的解析器.

相关问题

数学解析器的智能设计?

-亚当

algorithm parsing equation

98
推荐指数
10
解决办法
8万
查看次数

修剪字符串中的特定字符

什么是与此方法等效的JavaScriptC#:

var x = "|f|oo||"; 
var y = x.Trim('|'); //  "f|oo"
Run Code Online (Sandbox Code Playgroud)

C#仅在字符串的开头结尾处修剪所选字符!

javascript string trim

92
推荐指数
8
解决办法
12万
查看次数

如何使用 JavaScript 获取数组项中的最后一个元素

我有一个像这样的数组项列表:

const items = [
  { a: 1 },
  { b: 2 },
  { c: 3 },
]
Run Code Online (Sandbox Code Playgroud)

如何返回/记录最后一个元素:{ c: 3 }

到目前为止,这是我尝试过的:

let newarray = items.map((item) => {
    console.log(item);
})

console.log(newarray);
Run Code Online (Sandbox Code Playgroud)

javascript arrays ecmascript-6

6
推荐指数
2
解决办法
3万
查看次数

我们可以获得jQuery Chosen插件的最后一个未选择的值吗?

我想要获得最后一个未被选中的值.我已经尝试了很多方法但是这可以给我最后选择的值(通过使用最后一个索引)不是最后未选择的.有什么办法吗?

$('#f_district').chosen().change( function(evt, params) {
    if(params.deselected)
    {            
        alert($(this).val());  // it returns null how I can get last unselect value? 
    }
    else
    {
        var arr=$(this).val();
        alert(arr[arr.length-1]);
    }
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-chosen

5
推荐指数
1
解决办法
731
查看次数

如何获取数组Node.js中的最后一项?

我是node.js和JavaScript的新手,所以这个问题可能很简单,但我无法弄清楚.

我在数组中有很多项目,但只想得到最后一项.我试图使用lodash但它不知何故不提供我在数组中的最后一项.

我的数组现在看起来像这样:

images : ['jpg.item_1', 'jpg.item_2', 'jpg.item_3', ..., 'jpg.item_n']
Run Code Online (Sandbox Code Playgroud)

我想得到:

images : 'jpg.item_n'
Run Code Online (Sandbox Code Playgroud)

使用lodash我得到:

images : ['g.item_1', 'g.item_2', 'g.item_n']
Run Code Online (Sandbox Code Playgroud)

看起来我只是在jpg中得到最后一个字母,即'g'.

我使用lodash的代码如下所示:

const _ = require('lodash');

return getEvents().then(rawEvents => {

  const eventsToBeInserted = rawEvents.map(event => {
    return {

      images: !!event.images ? event.images.map(image => _.last(image.url)) : []

    }
  })
})
Run Code Online (Sandbox Code Playgroud)

javascript arrays node.js

4
推荐指数
1
解决办法
2万
查看次数

如何在Vanilla Javascript中不修改源数组的情况下查找数组的最后一个元素

我有一个数组包含

const data = ['a', 'b', 'c', 'd'];
Run Code Online (Sandbox Code Playgroud)

如何找到最后一个元素,结果应该是'd'

javascript arrays

4
推荐指数
4
解决办法
8162
查看次数

如何选择数组中的最后一个东西?

var myarray = [];

var result1 = myarray[0];
var result2 = myarray[1];
var result3 ....etc...
Run Code Online (Sandbox Code Playgroud)

首先选择很容易,因为它只是0.如何将最后一个放入var中?这似乎是一个简单的问题,但我一定是谷歌搜索错误,因为我找不到任何有效的答案.

javascript arrays jquery

3
推荐指数
1
解决办法
474
查看次数