jQuery等同于Prototype array.last()

64 arrays jquery

原型:

var array = [1,2,3,4];
var lastEl = array.last();
Run Code Online (Sandbox Code Playgroud)

在jQuery中有类似的东西吗?

Sal*_*lty 135

为什么不使用简单的JavaScript?

var array=[1,2,3,4];
var lastEl = array[array.length-1];
Run Code Online (Sandbox Code Playgroud)

如果你愿意,也可以把它写成一个方法(假设你的页面上没有包含原型):

Array.prototype.last = function() {return this[this.length-1];}
Run Code Online (Sandbox Code Playgroud)

  • 这是错的.如果数组为空,则查找`array [-1]` (12认同)
  • 在我看来很好.为什么这么说呢?对.split()的调用结束了链式能力,所以没有损失. (7认同)
  • @DisgruntledGoat ...将返回`undefined`.这与Prototype的行为相同:http://www.prototypejs.org/api/array/last (7认同)
  • 你没有回答他的问题.是的,原始的javascript可能更好,但问题是jQuery等价物.您提出的解决方案可能会在某些jQuery场景中产生不良情况(我自己经历过) (4认同)

guy*_*ush 78

with slice():

var a = [1,2,3,4];
var lastEl = a.slice(-1)[0]; // 4
// a is still [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

用pop();

var a = [1,2,3,4];
var lastEl = a.pop(); // 4
// a is now [1,2,3]
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

  • 为什么不只是`.slice().pop()`复制数组并从副本中弹出一个元素? (11认同)

gna*_*arf 22

在处理jQuery对象时,.last()只会这样做,将匹配的元素过滤到集合中的最后一个元素.

当然,您可以使用jQuery包装本机数组,从而导致:

var a = [1,2,3,4];
var lastEl = $(a).last()[0];
Run Code Online (Sandbox Code Playgroud)


Muh*_*lim 12

为什么不使用get函数?

var a = [1,2,3,4];
var last = $(a).get(-1);
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/get/更多信息

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