20

是否有一种快速(简短,字符明智)的方法来获取数组的最后一个元素(假设数组非空)?

我通常这样做:

last = array[array.length-1]或者last = array[-1..][0]

4

5 回答 5

20

如果您使用的是现代版本的 CoffeeScript,请不要使用它。改用dule的答案。


如果您不介意修改数组,

last = array.pop()

如果您不想修改数组,

last = array[..].pop()

编译为last = array.slice(0).pop(). 我认为对于已经接触过 CoffeeScript 或 Python 切片的人来说,它是非常易读的。但是,请记住,它会比last = array[array.length-1]大型阵列慢得多。

我不会推荐last = array[-1..][0]。它很短,但我认为它的含义不会立即显而易见。不过,这都是主观的。

于 2012-08-22T18:55:22.437 回答
20

为此修改Array原型既简单又无害:

Array::last = -> @[@length - 1]

如果你已经在使用优秀的Underscore.js,你可以使用它的_.last(arr).

于 2012-08-22T19:46:12.537 回答
19

另一种选择是使用咖啡的解构:

[..., last] = array

于 2015-05-14T18:41:15.010 回答
9

我喜欢dule的建议,原因如下:

我使用 'try coffeescript' 测试了这种解构方法,这是一个在线咖啡到 js 编译器,位于http://coffeescript.org/

鉴于以下咖啡脚本:

arr = [1,2,3,4,5]

[..., last] = arr

它编译成:

var arr, last;

arr = [1, 2, 3, 4, 5];

last = arr[arr.length - 1];

这真的很理想。解构语法非常清晰简洁。编译后的 javascript 是高性能的。我认为没有理由不使用它。

(我没有足够的声誉将其作为评论发布在 dule 的答案下,因此即使它是评论,我也将其添加为答案。)

于 2015-12-12T16:37:09.197 回答
0

或者你可以这样做:

last = array[-1..][0]
于 2018-01-25T05:01:13.883 回答