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

有点奇怪的是,JavaScript Array类没有提供检索数组的最后一个元素的最后一个方法。 我知道解决scheme很简单(Ar [Ar.length-1]),但是,这仍然是太频繁使用。

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

因为Javascript变化很慢。 这是因为人们慢慢升级浏览器。

许多JavaScript库实现自己的last()函数。 使用一个!

你可以做这样的事情:

 [10, 20, 30, 40].slice(-1)[0] 

可以添加到语言的辅助方法的数量是无限的。 我想他们只是没有考虑添加这个。

自己定义一个很容易。 这是JavaScript的力量。

 if(!Array.prototype.last) { Array.prototype.last = function() { return this[this.length - 1]; } } var arr = [1, 2, 5]; arr.last(); // 5 

但是,这可能会导致第三方代码(错误地)用于循环遍历数组。

但是,如果您不受浏览器支持问题的约束,那么使用新的ES5语法来定义属性可以通过使该函数不可枚举来解决该问题,如下所示:

 Object.defineProperty(Array.prototype, 'last', { enumerable: false, configurable: true, get: function() { return this[this.length - 1]; }, set: undefined }); var arr = [1, 2, 5]; arr.last; // 5 

i = [].concat(loves).pop(); //corn

图标猫爱爆米花

另一个选项,特别是如果你已经使用UnderscoreJS,将是:

 _.last([1, 2, 3, 4]); // Will return 4 
 Array.prototype.last = Array.prototype.last || function() { var l = this.length; return this[l-1]; } x = [1,2]; alert( x.last() ) 

来到这里寻找自己的这个问题的答案。 切片的答案可能是最好的,但是我为了练习扩展原型而创build了一个“最后一个”函数,所以我想我会继续分享它。 它有一些其他的好处,让你有select地倒数数组,并拉出倒数第二,倒数第三倒数。 如果你不指定一个计数它只是默认为1,并拉出最后一个项目。

 Array.prototype.last = Array.prototype.last || function(count) { count = count || 1; var length = this.length; if (count <= length) { return this[length - count]; } else { return null; } }; var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.last(); // returns 9 arr.last(4); // returns 6 arr.last(9); // returns 1 arr.last(10); // returns null 

这是另一个更简单的方法来分割最后的元素

  var tags = [1, 2, 3, "foo", "bar", "foobar", "barfoo"]; var lastObj = tags.slice(-1); 

lastObj现在是["barfoo"]

Python以同样的方式做这件事,当我尝试使用JS时,它已经解决了。 我猜测脚本语言中的string操作的工作方式是一样的。

同样,如果你想要一个数组中的最后两个对象,

 var lastTwoObj = tags.slice(-2) 

会给你["foobar", "barfoo"]等等。

pop()方法会popup最后一个值。 但问题是你将失去数组中的最后一个值

是的,或者只是:

 var arr = [1, 2, 5]; arr.reverse()[0] 

如果你想要的价值,而不是一个新的列表。