Lch*_*chi 20 arrays coffeescript
是否有快速(简短,明智的)方式来获取数组的最后一个元素(假设数组是非空的)?
我经常这样做:
last = array[array.length-1] 要么 last = array[-1..][0]
Sno*_*all 19
如果您使用的是现代版本的CoffeeScript,请不要使用它.请使用dule的答案.
如果你不介意修改数组,
last = array.pop()
Run Code Online (Sandbox Code Playgroud)
如果你不想修改数组,
last = array[..].pop()
Run Code Online (Sandbox Code Playgroud)
那就是编译last = array.slice(0).pop().我认为对于已经暴露给CoffeeScript或Python切片的人来说,这是非常易读的.但是,请记住它会比last = array[array.length-1]大型数组慢得多.
我不推荐last = array[-1..][0].这很简短,但我不认为它的含义是显而易见的.不过,这一切都是主观的.
Tre*_*ham 19
为此修改Array原型很简单,无害:
Array::last = -> @[@length - 1]
Run Code Online (Sandbox Code Playgroud)
如果你已经使用了优秀的Underscore.js,你可以使用它_.last(arr).
我喜欢dule的建议,原因如下:
我用'try coffeescript'测试了这种解构方法,这是一个在线咖啡,来自http://coffeescript.org/的 js编译器.
鉴于以下coffeescript:
arr = [1,2,3,4,5]
[..., last] = arr
Run Code Online (Sandbox Code Playgroud)
它汇编成:
var arr, last;
arr = [1, 2, 3, 4, 5];
last = arr[arr.length - 1];
Run Code Online (Sandbox Code Playgroud)
这非常理想.解构语法非常简洁明了.编译好的javascript是高效的.我认为没有理由不使用它.
(根据dule的回答,我没有足够的声誉将其作为评论发布,所以即使是评论,我也将其添加为答案.)
| 归档时间: |
|
| 查看次数: |
9694 次 |
| 最近记录: |