jQuery相当于原型数组。last()

jQuery相当于原型数组。last(),jquery,arrays,Jquery,Arrays,原型: var array = [1,2,3,4]; var lastEl = array.last(); 在jQuery中有类似的东西吗?为什么不使用简单的javascript呢 var array=[1,2,3,4]; var lastEl = array[array.length-1]; 如果愿意,您也可以将其作为一种方法编写(假设您的页面中未包含原型): 对于数组,只需使用array.length-1检索最后一个元素位置即可: var a = [1,2,3,4]; var last

原型:

var array = [1,2,3,4];
var lastEl = array.last();

在jQuery中有类似的东西吗?

为什么不使用简单的javascript呢

var array=[1,2,3,4];
var lastEl = array[array.length-1];
如果愿意,您也可以将其作为一种方法编写(假设您的页面中未包含原型):


对于数组,只需使用
array.length-1
检索最后一个元素位置即可:

var a = [1,2,3,4];

var lastEl = a[a.length-1]; // 4
在jQuery中有选择器,但这对普通数组没有帮助。

with slice()

用pop()


有关更多信息,请参见

在处理jQuery对象时,将只过滤匹配的元素到集合中的最后一个

当然,您可以使用jQuery包装本机数组,从而实现以下目的:

var a = [1,2,3,4];
var lastEl = $(a).last()[0];

如果在阵列上使用原型,如:

Array.prototype.last = function() {return this[this.length-1];}
使用forloops可以做到这一点

var a = [0,1,2];
out --> 0
out --> 1
out --> 2
out --> last

我知道答案已经给出了,但我想我有另一个解决方案。 您可以获取数组,将其反转,然后输出第一个数组项,如下所示:

var a = [1,2,3,4]; var lastItem = a.reverse()[0]; var a=[1,2,3,4]; var lastItem=a.reverse()[0];
对我来说很好。

为什么不使用get函数呢

var a = [1,2,3,4];
var last = $(a).get(-1);
更多信息

编辑: 正如ElightedD0D所指出的,根据jQuery的文档,这不是正确的函数,但它仍然提供正确的结果。我建议使用Salty的答案来保持代码的正确性。

请参阅这些测试用例 最有效的方法是through.pop方法(在V8中),但会丢失数组的最后一个元素

根据,最有效的方法是
数组[array.length-1]
。图表显示的是每秒的操作数,而不是每次操作的时间

对于开发人员来说,认为单个操作的性能很重要是很常见的(但这是错误的)。事实并非如此。只有在执行大量相同操作时,性能才起作用。在这种情况下,使用静态值(
length
)访问特定的索引(
length-1
)是最快的,甚至还不接近 它不是jQuery,而是除了jQuery之外,您可能会发现另一个有用的库:Try

Sugar是一个Javascript库,它使用有用的方法扩展本机对象。它被设计为直观、不引人注目,让您用更少的代码做更多的事情

使用SugarJS,您可以:

[1,2,3,4].last()    //  => 4
这意味着,您的示例是开箱即用的:

var array = [1,2,3,4];
var lastEl = array.last();    //  => 4
更多信息

    • url:www.mydomain.com/user1/1234

      $.params=window.location.href.split(“/”); $.params[$.params.length-1]

      您可以根据查询字符串分隔符进行拆分

      我使用以下方法:

      array.reverse()[0]

      使用reverse()反转数组,然后使用[0]拾取反转版本的第一项,即原始数组的最后一项


      当然,如果您不关心数组是否反转,那么可以使用此代码,因为它将保持反转

      因为下面这样的内容看起来不太好:$('a').attr('href').split('#').last();我觉得不错。你为什么说没有?对.split()的调用结束了链式能力,因此没有损失。这是错误的。如果数组为空,则您正在查找
      数组[-1]
      @disgrudedgoat。。。它将返回未定义的
      。这和原型的行为是一样的:你没有回答他的问题。是的,原始javascript可能更优越,但问题是与jQuery等价的。您提出的解决方案可能会在某些jQuery场景中产生不希望出现的情况(我自己也经历过)为什么不复制数组并从副本中弹出一个元素?@gnarf我猜是因为使用
      .slice()
      复制所有数组可能比仅使用
      .slice(-1)复制最后一个元素更昂贵
      仅为获取最后一个值而反转数组的代价是不必要的。另外,原始数组被修改。方法仍然返回最后一个元素。因此,我不认为有理由投反对票+1这里。伙计,你的处理器需要更多的工作才能得到同样的结果。这是徒劳无益的浪费资源。你看不出来吗?“只为我工作”是一个荒谬的咒语。很多人都在谈论这样或那样的方式更高效,有人贴了一个链接来展示性能,没有投票。当然,这可能是因为他把图表看反了。我已经纠正并扩展了他的评论。@MichaelBlackburn嘿!我在评论队列中发现了你的编辑,我想我应该解释一下为什么它被拒绝,尽管它更准确。简单地说:-相反,最好否决这些答案,并留下解释原因的评论。当然,你是绝对正确的,所以也许你可以用准确的性能信息添加你自己的答案?我会投票的!:)你应该使用hasOwnProperty来避免这种情况。考虑到所问的问题,我认为这是最相关、最优雅的答案。根据jQuery文档:“从匹配集的末尾开始计算负索引,因此本例返回列表中的最后一项:”谢谢。这是错误的。这不适用于这样的数组。@令人高兴的是,在这种情况下,您已经回答了我答案中的“为什么不”部分。请反转数组并选择反转版本中的第一个,因此原始数组的最后一个是O(n),因为它将反转整个数组,即使您只需要最后一个条目。Salty的答案是O(1),它随着数组变长而变快。
      var a = [1,2,3,4];
      var last = $(a).get(-1);
      
      [1,2,3,4].last()    //  => 4
      
      var array = [1,2,3,4];
      var lastEl = array.last();    //  => 4