是否有快速(简短,明智的)方式来获取数组的最后一个元素(假设数组是非空的)?
我通常会这样做:
last = array[array.length-1]
或last = array[-1..][0]
答案 0 :(得分:19)
如果您使用的是现代版本的CoffeeScript,请不要使用此功能。请改为使用 dule 的答案。
如果你不介意修改数组,
last = array.pop()
如果您不想修改数组,
last = array[..].pop()
编译为last = array.slice(0).pop()
。我认为对于已经暴露给CoffeeScript或Python切片的人来说,这是非常易读的。但是,请记住,对于大型数组,它会比last = array[array.length-1]
慢得多。
我不推荐last = array[-1..][0]
。这很简短,但我不认为它的含义是显而易见的。但这都是主观的。
答案 1 :(得分:18)
答案 2 :(得分:16)
另一种选择是使用咖啡的解构:
[..., last] = array
答案 3 :(得分:7)
我喜欢dule的建议,原因如下:
我使用'尝试coffeescript'来测试这种解构方法,这是的js编译器的在线咖啡。
鉴于以下coffeescript:
var arr, last;
arr = [1, 2, 3, 4, 5];
last = arr[arr.length - 1];
汇编成:
<table style="border:none;margin:0;padding:0;width:288px;-webkit-border-horizontal-spacing:0;">
<tr style="padding:0;border:none;margin:0">
<td style="padding:0;border:none;margin:0;width:288px;">
<div style="width:288px;margin:0;padding:0;border:none;">xx</div>
</td>
</tr>
</table>
这非常理想。解构语法非常简洁明了。编译好的javascript是高效的。我认为没有理由不使用它。
(根据dule的回答,我没有足够的声誉将其作为评论发布,所以我将其添加为答案,即使它是评论。)
答案 4 :(得分:0)
或者你可以这样做:
last = array[-1..][0]