【发布时间】:2010-11-12 16:44:56
【问题描述】:
原型:
var array = [1,2,3,4];
var lastEl = array.last();
在 jQuery 中有什么类似的吗?
【问题讨论】:
原型:
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.prototype.last = function() {return this[this.length-1];}
【讨论】:
array[-1]
undefined。这与 Prototype 的行为相同:prototypejs.org/api/array/last
使用切片():
var a = [1,2,3,4];
var lastEl = a.slice(-1)[0]; // 4
// a is still [1,2,3,4]
用 pop();
var a = [1,2,3,4];
var lastEl = a.pop(); // 4
// a is now [1,2,3]
更多信息请参见https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
【讨论】:
.slice().pop() 复制数组并从副本中弹出一个元素?
.slice() 复制所有数组可能比使用.slice(-1) 仅复制最后一个元素更昂贵
当处理一个 jQuery 对象时,.last() 会这样做,将匹配的元素过滤到集合中的最后一个。
当然,您可以使用 jQuery 包装一个原生数组,从而实现:
var a = [1,2,3,4];
var lastEl = $(a).last()[0];
【讨论】:
为什么不用get函数?
var a = [1,2,3,4];
var last = $(a).get(-1);
http://api.jquery.com/get/更多信息
编辑: 正如 DelightedD0D 所指出的,这不是根据 jQuery 文档使用的正确函数,但它仍然提供正确的结果。我建议使用 Salty 的答案来保持您的代码正确。
【讨论】:
.get() - Retrieve the DOM elements matched by the jQuery object.。这并不意味着在这样的数组上使用。
对于数组,您可以简单地使用 array.length - 1 检索最后一个元素位置:
var a = [1,2,3,4];
var lastEl = a[a.length-1]; // 4
在 jQuery 中,您有 :last 选择器,但这对普通数组没有帮助。
【讨论】:
如果你在数组上使用原型:
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];
对我来说很好。
【讨论】:
根据jsPerf: Last item method,性能最高的方法是array[array.length-1]。该图显示每秒操作数,而不是每次操作的时间。
开发人员认为单个操作的性能很重要是很常见的(但错误的)。它不是。仅当您执行大量相同操作时,性能才重要。在这种情况下,使用静态值 (length) 访问特定索引 (length-1) 是最快的,而且还差得远。
【讨论】:
查看这些测试用例http://jsperf.com/last-item-method 最有效的方法是通过 .pop 方法(在 V8 中),但会丢失数组的最后一个元素
【讨论】:
网址:www.mydomain.com/user1/1234
$.params = window.location.href.split("/"); $.params[$.params.length-1];
您可以根据查询字符串分隔符进行拆分
【讨论】:
你可以使用这个Arr.slice(-1)[0]。
Arr=[1,2,3,4,5,6,7]
让我们明白这一点。 -1 表示您正在查找 Array 的最后一个索引。
因此,当您使用 Arr.slice(-1)[0] 时,您将得到结果:7。
【讨论】:
它不是 jQuery,而是另一个你可能会发现除了 jQuery 之外有用的库:试试SugarJS。
Sugar 是一个 Javascript 库,它使用有用的方法扩展原生对象。它旨在直观、不显眼,让您用更少的代码做更多的事情。
使用 SugarJS,您可以:
[1,2,3,4].last() // => 4
这意味着,您的示例确实可以开箱即用:
var array = [1,2,3,4];
var lastEl = array.last(); // => 4
【讨论】:
我用这个:
array.reverse()[0]
你用 reverse() 反转数组,然后用 [0] 选择反转版本的第一项,即原始数组的最后一项。
如果您当然不关心数组是否被反转,您可以使用此代码,因为它会一直如此。
【讨论】: